2011-06-23 19 views
15

¿Cómo se convierte esta cadena en gson.JsonArray?No se puede convertir la cadena en JsonArray

String s= "[["110917 ", 3.0099999999999998, -0.72999999999999998, 2.8500000000000001, 2.96, 685.0, 38603.0], ["110917 ", 2.71, 0.20999999999999999, 2.8199999999999998, 2.8999999999999999, 2987.0, 33762.0]]"; 

Ésta es mi Código:

com.google.gson.*; 
public static void main(String[] args) 
    { 
     //Declared S here 
     System.out.println("String to Json Array Stmt"); 
     JsonParser parser = new JsonParser(); 
     JsonElement tradeElement = parser.parse(s.toString()); 
     JsonArray trade = tradeElement.getAsJsonArray(); 
     System.out.println(trade); 
    } 

Es esta la forma de convertir esta cadena Colecciones de JSONArray?

+0

¿Qué biblioteca está utilizando? –

+0

com.google.gson.JsonArray; Biblioteca estoy usando esto (gson) – Nava

Respuesta

31

Para tener un valor de cadena dentro de su matriz JSON, debe recordar hacer una barra diagonal inversa para evitar las comillas dobles en su programa Java. Ver la declaración de s a continuación.

String s = "[[\"110917  \", 3.0099999999999998, -0.72999999999999998, 2.8500000000000001, 2.96, 685.0, 38603.0], [\"110917 \", 2.71, 0.20999999999999999, 2.8199999999999998, 2.8999999999999999, 2987.0, 33762.0]]"; 

Su código en el método main() funciona bien. A continuación se muestra solo una pequeña modificación de su código en el método main().

System.out.println("String to Json Array Stmt"); 
JsonParser parser = new JsonParser(); 
JsonElement tradeElement = parser.parse(s); 
JsonArray trade = tradeElement.getAsJsonArray(); 
System.out.println(trade); 

Por último, recuerde que debe anteponer su estado de "com.google.gson. *" Con la palabra clave "importación", como se muestra a continuación.

import com.google.gson.*; 
+0

Aquí error ortográfico para la importación en la pregunta. Realmente agregado en la fuente ... gracias – Nava

+0

¿Es posible dividir el JsonArray? – Nava

+0

¿Quiere decir obtener el primer elemento ([\ "110917 \", 3.0099999999999998, -0.72999999999999998, 2.8500000000000001, 2.96, 685.0, 38603.0]) de JsonArray "trade"? Intenta usar "trade.get (0)". – AaronYC

6

No veo el problema. Este código funciona muy bien para mí:

import com.google.gson.JsonArray; 
import com.google.gson.JsonElement; 
import com.google.gson.JsonParser; 


public class GsonExample { 
    public static void main(String[] args) { 
     String s= "[[\"110917\", 3.0099999999999998, -0.72999999999999998," + 
       "2.8500000000000001, 2.96, 685.0, 38603.0], [\"110917\", 2.71," + 
       "0.20999999999999999, 2.8199999999999998, 2.8999999999999999," + 
       "2987.0, 33762.0]]"; 


     JsonParser parser = new JsonParser(); 
     JsonElement elem = parser.parse(s); 

     JsonArray elemArr = elem.getAsJsonArray(); 
     System.out.println(elemArr); 
    } 
} 

El único problema es que puede que usted no pudo escapar correctamente las comillas dobles en su cadena literal s.

+0

¿Sé por qué aquí tenemos que agregar/(barra diagonal) al frente de las cadenas? – Nava

+0

Solo quiero la primera lista solo como una matriz json? ¿Es posible pasar? – Nava

+0

La barra oblicua es para escapar del "carácter. Si no lo haces, el compilador no puede saber que no tienes la intención de terminar la cadena, por ejemplo, con un cierre". Vea aquí: http://en.wikipedia.org/wiki/Escape_character –

Cuestiones relacionadas