2011-01-24 21 views
14

यह एक जेसन सरणी को स्ट्रिंग [] में परिवर्तित करने के लिए बहुत अधिक boilterplate की तरह दिखता है। क्या कोई आसान और सुरुचिपूर्ण तरीका है?JSONArray स्ट्रिंग सरणी

final JSONArray keyArray = input.getJSONArray("key"); 
String[] keyAttributes = new String[keyArray.length()]; 
for(int i = 0; i < keyArray.length(); i++) { 
    keyAttributes[i] = keyArray.getString(i); 
} 
+1

मान लीजिए org.json.JSONArray। नहीं, यह उतना अच्छा है जितना इसे मिलता है। –

उत्तर

6

उपयोग gson है। यह org.json से अधिक मित्रवत एपीआई मिला है।

(User Guide से) Collections Examples:

Gson gson = new Gson(); 
Collection<Integer> ints = Lists.immutableList(1,2,3,4,5); 

//(Serialization) 
String json = gson.toJson(ints); ==> json is [1,2,3,4,5] 

//(Deserialization) 
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType(); 
Collection<Integer> ints2 = gson.fromJson(json, collectionType); 
//ints2 is same as ints 
+2

धन्यवाद। int [] ints2 = gson.fromJson ("[1,2,3,4,5]", int [] वर्ग); ऐसा कुछ है जिसे मैं ढूंढ रहा था। – Fakrudeen

0

किसी भी निर्मित विधि है कि ऐसा करने नहीं है और मुझे लगता है कि यह सबसे आसान तरीका है

यहाँ similar topic है आप में मदद मिलेगी

+0

यहां तक ​​कि 'अच्छी तरह से ज्ञात' लाइब्रेरी का उपयोग करना मेरे लिए भी होगा। – Fakrudeen

2

यह बदसूरत है, लेकिन यह विश्वास है या नहीं यह केवल तत्वों के लिए अल्पविराम नहीं है के लिए, लेकिन काम करता है:

String[] keyAttributes = keyArray.toString.substring(1,keyArray.toString.length-1).replaceAll("\"","").split(",") 

नीचे SK9 की टिप्पणी, देखना ईजी: "[\",\", \"a,b\"]" के रूप में गलत तरीके से पार्स किया जाएगा [",", "a,b"]

+1

यह काम नहीं करता है। क्या होता है यदि प्रत्येक आइटम एक स्ट्रिंग है और कम से कम एक कोमा शामिल है? जैसे "[\", \ ", \" ए, बी \ "]" – SK9

+0

एसके 9 बिल्कुल सही है, यह कॉमा के साथ किसी भी कुंजी के लिए काम नहीं करेगा! –

0

आप सही हैं! यहां तक ​​कि @Sean Patrick Floyd's उत्तर एक JSON सरणी को स्ट्रिंग [] या किसी अन्य प्रकार के सरणी वर्ग में गुप्त करने के लिए बहुत अधिक boilterplate है। बल्कि यहाँ क्या मैं सुंदर होना करने के लिए लगता है:

JsonArray jsonArray = input.getAsJsonArray("key"); 

Gson gson = new Gson(); 
String[] output = gson.fromJson(jsonArray , String[].class) 

नोट 1: JsonArray, तार की एक सरणी, ऊपर के उदाहरण के लिए किया जाना चाहिए किसी भी संपत्ति के नाम के बिना। उदाहरण के लिए:

{key:["Apple","Orange","Mango","Papaya","Guava"]} 

नोट 2:JsonObject ऊपर उपयोग वर्ग com.google.gson पुस्तकालय और org.json पुस्तकालय से नहीं JSONObject वर्ग से है।

1
public String[] jsonArrayToStringArray(JSONArray jsonArray) { 
    int arraySize = jsonArray.size(); 
    String[] stringArray = new String[arraySize]; 

    for(int i=0; i<arraySize; i++) { 
     stringArray[i] = (String) jsonArray.get(i); 
    } 

    return stringArray; 
}; 
संबंधित मुद्दे