2012-05-08 32 views
24

Używam Gson i próbuję dodać kilka ciągów znaków w JsonArray tak:Gson tablicy ciągów do JsonArray

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

Problemem jest to, że metoda add bierze JsonElement tylko.

Próbowałem rzucić ciąg w JsonElement, ale to nie zadziałało.

Jak zrobić to za pomocą Gson?

Odpowiedz

61

Można tworzyć prymitywne, że wola zawiera wartość ciągu i dodać go do tablicy:

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

Dlaczego to jest tak śmiesznie ** ** intuicją? – allidoiswin

+0

A dlaczego dokumenty mówią nam, że istnieje JsonArray.add (String)?!? –

3

Wygląda na to, że powinieneś zrobić new JsonPrimitive("value1") i dodać to. Zobacz The javadoc

0

Miałem nadzieję na coś takiego sobie:

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

ale niestety, że ISN 't obsługiwane przez GSON, więc stworzyłem tego pomocnika:

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); 
} 

A następnie użyj go tak:

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

Voila!