दिलचस्प पोस्ट
क्या पायथन फ़ंक्शन तर्कों के मूल्यांकन के आदेश पर भरोसा करना सुरक्षित है? टेम्पलेट पैरामीटर के लिए 'क्लास' या 'टाइपनाम' का उपयोग करें? एक इंट में अंकों की संख्या प्राप्त करने का तरीका? PHP और jquery का उपयोग करते हुए साधारण धूमकेतु उदाहरण वंशानुक्रम या रचना: "है-ए" और "है-ए" पर भरोसा करें? मैं अपाचे में निर्देशिका को विशेष रूप से स्रोत-नियंत्रण कैसे छुपाऊँ? अलग-अलग समय पर विभिन्न पैरामीटरों से मैं एक सूची को कैसे सॉर्ट कर सकता हूँ .bashrc, .bash_profile, और .environment के बीच अंतर क्या है? MongoDB और "मिलती है" .NET HashTable वीएस डिक्शनरी – क्या डिक्शनरी को तेज़ हो सकता है? "आर को एक चर में हल नहीं किया जा सकता"? एंड्रॉइड में बिटमैप का आकार बदलने के लिए कैसे? विशेष वर्णों की खोज करने के लिए मैं एक खोज इंजन का उपयोग कैसे कर सकता हूं? OpenCV और मशीन सीखने का उपयोग कर सरल ऑब्जेक्ट डिटेक्शन कैसे जांचने के लिए कि अजगर में स्ट्रिंग ASCII में है?

Android में JSON Array (जेसन ऑब्जेक्ट नहीं) को कैसे पार्स करना है

मुझे एक समस्या है जिस तरह से JSONArray को पार्स करना है यह इस तरह दिख रहा है:

[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...] 

मुझे पता है कि यह कैसे पार्स करना है अगर JSON अलग लिखा गया था (दूसरे शब्दों में, अगर मुझे ऑब्जेक्ट के सरणी के बजाय json ऑब्जेक्ट दिया गया था) लेकिन यह मेरे पास है और इसके साथ जाना होगा।

* संपादित करें: यह एक मान्य json है मैंने इस जेएसएन का इस्तेमाल करते हुए एक आईफोन ऐप बनाया है, अब मुझे इसे एंड्रॉइड के लिए करना है और इसे समझ में नहीं आ रहा है। वहाँ बहुत सारे उदाहरण हैं, लेकिन वे सभी JSONObject संबंधित हैं। मुझे जेसनअरेरे के लिए कुछ चाहिए

क्या कोई मुझे कुछ संकेत, या ट्यूटोरियल या एक उदाहरण दे सकता है?

बहुत सराहना की !

Solutions Collecting From Web of "Android में JSON Array (जेसन ऑब्जेक्ट नहीं) को कैसे पार्स करना है"

JsonArray को पार्स करने के लिए निम्नलिखित स्निपेट का उपयोग करें।

 JSONArray jsonarray = new JSONArray(jsonStr); for (int i = 0; i < jsonarray.length(); i++) { JSONObject jsonobject = jsonarray.getJSONObject(i); String name = jsonobject.getString("name"); String url = jsonobject.getString("url"); } 

आशा करता हूँ की ये काम करेगा।

मैं थोड़ा जैक्सन उदाहरण देता हूँ:

पहले एक डेटा धारक बनाओ जिसमें जेएसओएन स्ट्रिंग से खेतों हैं

 // imports // ... @JsonIgnoreProperties(ignoreUnknown = true) public class MyDataHolder { @JsonProperty("name") public String mName; @JsonProperty("url") public String mUrl; } 

और MyDataHolders की पार्स सूची

 String jsonString = // your json ObjectMapper mapper = new ObjectMapper(); List<MyDataHolder> list = mapper.readValue(jsonString, new TypeReference<ArrayList<MyDataHolder>>() {}); 

सूची आइटम का उपयोग करना

 String firstName = list.get(0).mName; String secondName = list.get(1).mName; 
 public static void main(String[] args) throws JSONException { String str = "[{\"name\":\"name1\",\"url\":\"url1\"},{\"name\":\"name2\",\"url\":\"url2\"}]"; JSONArray jsonarray = new JSONArray(str); for(int i=0; i<jsonarray.length(); i++){ JSONObject obj = jsonarray.getJSONObject(i); String name = obj.getString("name"); String url = obj.getString("url"); System.out.println(name); System.out.println(url); } } 

आउटपुट:

 name1 url1 name2 url2 

ऑब्जेक्ट को पकड़ने के लिए एक क्लास बनाएं

 public class Person{ private String name; private String url; //Get & Set methods for each field } 

फिर deserialize निम्नानुसार है:

 Gson gson = new Gson(); Person[] person = gson.fromJson(input, Person[].class); //input is your String 

संदर्भ आलेख: http://blog.patrickbaumann.com/2011/11/gson-array-deserialization/

इस उदाहरण में एक जेसन सरणी के अंदर कई ऑब्जेक्ट हैं। अर्थात्,

यह जेसन सरणी है: [{"नाम": "नाम 1", "url": "url1"}, {"name": "name2", "url": "url2"}, …]

यह एक ऑब्जेक्ट है: {"name": "name1", "url": "url1"}

यह मानते हुए कि आपको स्ट्रिंग वेरिएबल का परिणाम मिला है जिसका नाम jSonResultString है:

 JSONArray arr = new JSONArray(jSonResultString); //loop through each object for (int i=0; i<arr.length(); i++){ JSONObject jsonProductObject = arr.getJSONObject(i); String name = jsonProductObject.getString("name"); String url = jsonProductObject.getString("url"); } 

@ साइबेरा इस उदाहरण को देखें। यह आपकी मदद कर सकता है

 public class CustomerInfo { @SerializedName("customerid") public String customerid; @SerializedName("picture") public String picture; @SerializedName("location") public String location; public CustomerInfo() {} } 

और जब आपको परिणाम मिलता है; इस तरह पार्स

 List<CustomerInfo> customers = null; customers = (List<CustomerInfo>)gson.fromJson(result, new TypeToken<List<CustomerInfo>>() {}.getType()); 

कुछ महान सुझाव पहले ही उल्लेख किए गए हैं वास्तव में जीएसओएन का प्रयोग करना वास्तव में आसान है, और जीवन को आसान बनाने के लिए आप इस वेबसाइट का प्रयास कर सकते हैं इसे जसॉनस्केमा 2 पीोजो कहा जाता है और यह बिल्कुल ठीक करता है:

आप इसे अपना जेसन देते हैं और यह एक जावा ऑब्जेक्ट उत्पन्न करता है जो आपकी प्रोजेक्ट में पेस्ट कर सकता है। आप अपने चर को एनोटेट करने के लिए जीएसओएन का चयन कर सकते हैं, इसलिए ऑब्जेक्ट को अपने जेएसओ से निकालने से भी आसान हो जाता है!

मेरा उदाहरण सर्वर उदाहरण से लोड ..

 int jsonLength = Integer.parseInt(jsonObject.getString("number_of_messages")); if (jsonLength != 1) { for (int i = 0; i < jsonLength; i++) { JSONArray jsonArray = new JSONArray(jsonObject.getString("messages")); JSONObject resJson = (JSONObject) jsonArray.get(i); //addItem(resJson.getString("message"), resJson.getString("name"), resJson.getString("created_at")); } 

आशा है कि यह मदद करेगा

  URL url = new URL("your URL"); connection = (HttpURLConnection) url.openConnection(); connection.connect(); InputStream stream = connection.getInputStream(); BufferedReader reader; reader = new BufferedReader(new InputStreamReader(stream)); StringBuffer buffer = new StringBuffer(); String line = ""; while ((line = reader.readLine()) != null) { buffer.append(line); } //setting the json string String finalJson = buffer.toString(); //this is your string get the pattern from buffer. JSONArray jsonarray = new JSONArray(finalJson); 

पुरानी पोस्ट मुझे पता है, लेकिन जब तक मैं इस सवाल को गलत समझा नहीं, यह चाल करना चाहिए:

 s = '[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"}]'; eval("array=" + s); for (var i = 0; i < array.length; i++) { for (var index in array[i]) { alert(array[i][index]); } 

}