2012-05-08 14 views
24

sto usando GSON e sto cercando di aggiungere un po 'di valori di stringa in un JsonArray come questo:GSON array di stringhe per JsonArray

JsonArray jArray = new JsonArray(); 
jArray.add("value1"); 

Il problema è che il metodo Add richiede solo un JsonElement.

Ho provato a trasmettere una stringa in un JsonElement ma non ha funzionato.

Come si utilizza Gson?

risposta

61

È possibile creare un primitivo che la volontà contiene il valore String e aggiungerlo alla matrice:

JsonArray jArray = new JsonArray(); 
JsonPrimitive element = new JsonPrimitive("value1"); 
jArray.add(element); 
+6

Perché è così ridicolmente ** ** controintuitivo? – allidoiswin

+0

E perché i documenti ci dicono che c'è un JsonArray.add (String)?!? –

3

Sembra che dovresti fare un new JsonPrimitive("value1") e aggiungerlo. Vedere The javadoc

0

speravo in qualcosa di simile me:

JsonObject jo = new JsonObject(); 
jo.addProperty("strings", new String[] { "value1", "value2" }); 

Ma purtroppo questo isn 't supportato da GSON quindi ho creato questo helper:

public static void Add(JsonObject jo, String property, String[] values) { 
    JsonArray array = new JsonArray(); 
    for (String value : values) { 
     array.add(new JsonPrimitive(value)); 
    } 
    jo.add(property, array); 
} 

e quindi utilizzarlo in questo modo:

JsonObject jo = new JsonObject(); 
Add(jo, "strings", new String[] { "value1", "value2" }); 

Voila!

Problemi correlati