2012-05-08 12 views
24

मैं Gson उपयोग कर रहा हूँ और एक JsonArray इस तरह में स्ट्रिंग मूल्यों का एक समूह जोड़ने के लिए कोशिश कर रहा हूँ:Gson सरणी JsonArray को

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

समस्या यह है कि ऐड विधि केवल एक JsonElement लेता है।

मैंने स्ट्रिंग को JsonElement में डालने का प्रयास किया है लेकिन यह काम नहीं करता है।

मैं इसे जीसन का उपयोग करके कैसे कर सकता हूं?

उत्तर

61

आप एक आदिम बना सकते हैं कि इच्छा स्ट्रिंग मान होता है और सरणी में जोड़ें:

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

क्यों यह इतना ** ludicrously ** counterintuitive है? – allidoiswin

+0

और दस्तावेज़ हमें क्यों बताते हैं कि एक JsonArray.add (स्ट्रिंग) है?! –

3

ऐसा लगता है कि आपको new JsonPrimitive("value1") बनाना चाहिए और उसे जोड़ना चाहिए। देखें The javadoc

0

मैं कुछ इस तरह के लिए उम्मीद कर रही थी अपने आप:

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

लेकिन दुर्भाग्य कि isn जीएसओएन द्वारा समर्थित नहीं है इसलिए मैंने इस सहायक को बनाया:

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

और फिर इतना की तरह उपयोग:

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

देखा!

1

जीसन लाइब्रेरी के नए संस्करणों के लिए, अब हम स्ट्रिंग्स भी जोड़ सकते हैं। यह भी बूलियन, चरित्र जोड़ने के लिए समर्थन का विस्तार किया है संख्या आदि

https://static.javadoc.io/com.google.code.gson/gson/2.6.2/com/google/gson/JsonArray.html#add-java.lang.String-

यह मेरे लिए अब काम करता है का उपयोग करना:

JsonArray msisdnsArray = new JsonArray(); 
     for(String msisdn : msisdns) { 
      msisdnsArray.add(msisdn); 
     }