दिलचस्प पोस्ट
HTML इनपुट प्रकार "फ़ाइल" या किसी अन्य तरीके से फ़ोल्डर निर्देशिका कैसे प्राप्त करें? स्मृति प्रबंधन / आकार एन एमबी के वेक्टर आवंटित नहीं कर सकता Async का उपयोग / कई कार्यों के लिए इंतजार प्रोग्रामिंग को निर्धारित करने के लिए कि क्या कोई विशेष प्रक्रिया 32-बिट या 64-बिट है जहां क्लॉज में स्ट्रिंग्स की सूची बनाने के लिए कॉमा से अलग स्ट्रिंग पार्स करें कार्रवाई और कार्रवाई के बीच मतभेद एंड्रॉइड फ्रैग्मेंट ऑन एट्च () नापसंद डिफ़ॉल्ट ऑब्जेक्ट.स्टोस्टिंग () क्यों हैशोड में शामिल है? रूबी में फ़ाइल प्रकार निर्धारित करें कोनेर 2 में मार्गों के बीच नेविगेट करते समय लोडिंग स्क्रीन दिखाएं मैं शून्य पर शून्य के साथ एक पूर्णांक कैसे पैड कर सकता हूं? सीएसएस कैलक विकल्प उद्देश्य सी में हर 3 अंकों की संख्या में कैसे अल्पविराम जोड़ना है? आर में एक चरित्र वेक्टर से उद्धरण निकालें संशोधन के लिए डेटाबेस डिजाइन?

Java में JSON ऑब्जेक्ट को पार्स करना

मेरे पास JSON वस्तु है:

member = "{interests : [{interestKey:Dogs}, {interestKey:Cats}]}"; 

जावा में मैं ऊपर jsonobject को पार्स करना चाहता हूं और सरणी सूची में मानों को संग्रहित करना चाहता हूं।

क्या कोई मुझे कुछ कोड स्निपेट प्रदान कर सकता है जिसके माध्यम से मैं इसे प्राप्त कर सकता हूं।

धन्यवाद

वेब के समाधान से एकत्रित समाधान "Java में JSON ऑब्जेक्ट को पार्स करना"

मैं मान रहा हूँ कि आप सूचियों को एक सूची में स्टोर करना चाहते हैं।

Org.json लाइब्रेरी का उपयोग करना:

 JSONObject obj = new JSONObject("{interests : [{interestKey:Dogs}, {interestKey:Cats}]}"); List<String> list = new ArrayList<String>(); JSONArray array = obj.getJSONArray("interests"); for(int i = 0 ; i < array.length() ; i++){ list.add(array.getJSONObject(i).getString("interestKey")); } 
 public class JsonParsing { public static Properties properties = null; public static JSONObject jsonObject = null; static { properties = new Properties(); } public static void main(String[] args) { try { JSONParser jsonParser = new JSONParser(); File file = new File("src/main/java/read.json"); Object object = jsonParser.parse(new FileReader(file)); jsonObject = (JSONObject) object; parseJson(jsonObject); } catch (Exception ex) { ex.printStackTrace(); } } public static void getArray(Object object2) throws ParseException { JSONArray jsonArr = (JSONArray) object2; for (int k = 0; k < jsonArr.size(); k++) { if (jsonArr.get(k) instanceof JSONObject) { parseJson((JSONObject) jsonArr.get(k)); } else { System.out.println(jsonArr.get(k)); } } } public static void parseJson(JSONObject jsonObject) throws ParseException { Set<Object> set = jsonObject.keySet(); Iterator<Object> iterator = set.iterator(); while (iterator.hasNext()) { Object obj = iterator.next(); if (jsonObject.get(obj) instanceof JSONArray) { System.out.println(obj.toString()); getArray(jsonObject.get(obj)); } else { if (jsonObject.get(obj) instanceof JSONObject) { parseJson((JSONObject) jsonObject.get(obj)); } else { System.out.println(obj.toString() + "\t" + jsonObject.get(obj)); } } } }} 

कोड करने के लिए बहुत ज्यादा धन्यवाद, मैं किसी भी JSON फ़ाइल को आपके कोड के लिए धन्यवाद पढ़ सकता हूं 🙂 अब, मैं उन सभी तत्वों को स्तरों से व्यवस्थित करने का प्रयास कर रहा हूँ, क्योंकि उनका इस्तेमाल हो सकता है!

मैं एक यूआरएल से एक जेएसओएन पढ़ने एंड्रॉइड के साथ काम कर रहा था और केवल मुझे बदलने की जरूरत थी लाइनें

Set<Object> set = jsonObject.keySet(); Iterator<Object> iterator = set.iterator();

के लिये

Iterator<?> iterator = jsonObject.keys();

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

 public void parseJson(JSONObject jsonObject) throws ParseException, JSONException { Iterator<?> iterator = jsonObject.keys(); while (iterator.hasNext()) { String obj = iterator.next().toString(); if (jsonObject.get(obj) instanceof JSONArray) { //Toast.makeText(MainActivity.this, "Objeto: JSONArray", Toast.LENGTH_SHORT).show(); //System.out.println(obj.toString()); TextView txtView = new TextView(this); txtView.setText(obj.toString()); layoutIzq.addView(txtView); getArray(jsonObject.get(obj)); } else { if (jsonObject.get(obj) instanceof JSONObject) { //Toast.makeText(MainActivity.this, "Objeto: JSONObject", Toast.LENGTH_SHORT).show(); parseJson((JSONObject) jsonObject.get(obj)); } else { //Toast.makeText(MainActivity.this, "Objeto: Value", Toast.LENGTH_SHORT).show(); //System.out.println(obj.toString() + "\t"+ jsonObject.get(obj)); TextView txtView = new TextView(this); txtView.setText(obj.toString() + "\t"+ jsonObject.get(obj)); layoutIzq.addView(txtView); } } } } 

जावा में कई जेएसओएन पुस्तकालय उपलब्ध हैं।

सबसे कुख्यात हैं: जैक्सन, जीएसओएन, जीन्सन, फास्ट जेसन और ओर्ग। जेएसन।

आमतौर पर तीन चीजें हैं जिन्हें किसी भी पुस्तकालय को चुनने के लिए देखना चाहिए:

  1. प्रदर्शन
  2. उपयोग की आसानी (कोड लिखना और स्पष्ट करना आसान है) – जो सुविधाओं के साथ चला जाता है
  3. मोबाइल एप्लिकेशन के लिए: निर्भरता / जार का आकार

विशेष रूप से जेएसओएन पुस्तकालयों (और किसी भी सीरियलायज़ेशन / डेसरियालाइजेशन लिब्स) के लिए, डाटाबेस भी आम तौर पर ब्याज के रूप में है क्योंकि यह डाटा पैक / अनपैक करने के लिए बॉयलर-प्लेट कोड लिखने की आवश्यकता को हटाता है।

1 के लिए, यह बेंचमार्क देखें: https://github.com/fabienrenaud/java-json-benchmark मैंने जेएमएच का उपयोग किया था जो धारावाहिकों और deserializers की धारा (जैक्सन, जीएसएन, जीन्सन, फायरजसन, ऑर्ग। जेएसन, जेएसएनपी) की तुलना करता है और डाटाबेस एपीआई 2 के लिए, आप इंटरनेट पर कई उदाहरण पा सकते हैं उपरोक्त बेंचमार्क का उपयोग उदाहरणों के स्रोत के रूप में भी किया जा सकता है …

बेंचमार्क की त्वरित यात्रा: जैक्सन org.json से 5 से 6 गुना बेहतर प्रदर्शन करता है और जीएसओएन की तुलना में दो बार बेहतर है।

आपके विशेष उदाहरण के लिए, निम्नलिखित कोड जैक्सन के साथ आपके जेसन को डीकोड करते हैं:

 public class MyObj { private List<Interest> interests; static final class Interest { private String interestKey; } private static final ObjectMapper MAPPER = new ObjectMapper(); public static void main(String[] args) throws IOException { MyObj o = JACKSON.readValue("{\"interests\": [{\"interestKey\": \"Dogs\"}, {\"interestKey\": \"Cats\" }]}", MyObj.class); } } 

अगर आपका कोई प्रश्न हैं, तो मुझे से पूछें।

1.) उपयुक्त प्रकार की सरणी सूची बनाएँ, इस मामले में String

2.) JSONObject कन्स्ट्रक्टर को अपनी स्ट्रिंग को इनपुट के रूप में पास करते समय JSONObject बनाएँ

  • JSONObject संकेतन के रूप में ब्रेसिज़ द्वारा प्रतिनिधित्व किया है, अर्थात् {}
  • जहां के रूप में JSONArray संकेतन वर्ग ब्रैकेट अर्थात् द्वारा दर्शाया गया है []

3.) JSONObject (2 कदम पर बनाया गया) JSONArray को इंडेक्स के रूप में "interests" का उपयोग करके पुनर्प्राप्त करें।

4.) JASONArray length() फ़ंक्शन द्वारा प्रदान की गई सरणी की लंबाई तक छोरों का उपयोग करना

5.) JSONObjects से getJSONObject(index) फ़ंक्शन का उपयोग करके अपने JSONObjects को पुनर्प्राप्त करें

6.) JSONObject से डेटा प्राप्त करें 'इंडेक्स' ब्याज की ''

नोट: JSON पार्सिंग विशेष नेस्टेड वर्णों के लिए एस्केप अनुक्रम का उपयोग करता है यदि json प्रतिक्रिया (आमतौर पर अन्य जेएसओएन प्रतिक्रिया एपीआई से) में इस तरह कोटेशन ( " ) शामिल हैं

 `"{"key":"value"}"` 

इस तरह होना चाहिए

 `"{\"key\":\"value\"}"` 

ताकि आप सुरक्षा के लिए एस्केप अनुक्रम प्रारूप को प्राप्त करने के लिए JSONParser का उपयोग कर सकें

 JSONParser parser = new JSONParser(); JSONObject json = (JSONObject) parser.parse(inputString); 

कोड:

 JSONParser parser = new JSONParser(); String response = "{interests : [{interestKey:Dogs}, {interestKey:Cats}]}"; JSONObject jsonObj = (JSONObject) parser.parse(response); 

या

 JSONObject jsonObj = new JSONObject("{interests : [{interestKey:Dogs}, {interestKey:Cats}]}"); 

 List<String> interestList = new ArrayList<String>(); JSONArray jsonArray = jsonObj.getJSONArray("interests"); for(int i = 0 ; i < jsonArray.length() ; i++){ interestList.add(jsonArray.getJSONObject(i).optString("interestKey")); } 

नोट: कुछ समय जब values are not available in appropriate type or is there is no mapping key नहीं है, तो उन मामलों में जब आप मूल्य की उपस्थिति के बारे में निश्चित नहीं हैं तो optString , optInt , optBoolean इत्यादि का उपयोग optString , जो बस वापस आ जाएगा डिफ़ॉल्ट मान यदि वह मौजूद नहीं है और यहां तक ​​कि मान को पूर्णांक में कनवर्ट करने का प्रयास करते हैं यदि यह स्ट्रिंग प्रकार की है और उप-विपरीत है तो बस शून्य या नंबरस्वरूप अपवाद अपरिवर्तित कुंजी या मान के मामले में

डॉक्स से

एक कुंजी के साथ जुड़े एक वैकल्पिक स्ट्रिंग प्राप्त करें यदि कोई ऐसी कुंजी नहीं है तो यह डिफ़ॉल्ट मुल्य देता है

  public String optString(String key, String defaultValue) { 
  String missingKeyValue = json_data.optString("status","N/A"); // note there is no such key as "status" in response // will return "N/A" if no key found 

या खाली स्ट्रिंग प्राप्त करने के लिए "" अगर कोई चाबी नहीं मिली तो बस का उपयोग करें

  String missingKeyValue = json_data.optString("status"); // will return "" if no key found where "" is an empty string 

अध्ययन के लिए आगे के संदर्भ

  • जावा में स्ट्रिंग को JSONObject में कैसे परिवर्तित किया जाए
  • एक सरणी सूची आइटम को कई आइटम में कनवर्ट करें