2012-09-05 18 views
78

के बीच अंतर Google पर एक छोटा सा नज़र रखने के बाद मुझे यह link मिला जो अंतर का वर्णन करता है, फिर भी एक वाक्यविन्यास बिंदु से।JSONObject और JSONArray

प्रोग्रामिंग परिदृश्य में किसी को दूसरे पर कब पसंद किया जाएगा?

उत्तर

147

जब आप एंड्रॉइड में जेएसओएन डेटा के साथ काम कर रहे हों, तो आप जेएसओएन को पार्स करने के लिए JSONArray का उपयोग करेंगे जो सरणी ब्रैकेट के साथ शुरू होता है। JSON में Arrays का उपयोग संबंधित वस्तुओं का संग्रह व्यवस्थित करने के लिए किया जाता है (जो JSON ऑब्जेक्ट्स हो सकता है)।
उदाहरण के लिए: [{"name":"item 1"},{"name": "item2} ]

दूसरी ओर, आप JSONObject का उपयोग करते JSON कि घुंघराले ब्रेसिज़ के साथ शुरू होता के साथ काम करेंगे। एक JSON ऑब्जेक्ट आमतौर पर एक आइटम से संबंधित कुंजी/मान जोड़े को शामिल करने के लिए उपयोग किया जाता है। उदाहरण के लिए: {"name": "item1", "description":"a JSON object"}

बेशक, JSON arrays और ऑब्जेक्ट्स एक-दूसरे के अंदर घोंसला हो सकते हैं। ,

{"startIndex": 0, "data": [{"name":"item 1"},{"name": "item2"} ]} 
+2

{ "STARTINDEX": 0, [{ "नाम": "आइटम 1"}, { "नाम": "ITEM2"}]} है न तो एक jsonbject और न ही एक jsonArray मैं इसे –

4

मैं हमेशा वस्तु का उपयोग यह और अधिक आसानी से बढ़ाई है, JSON सारणी नहीं है: इस का एक सामान्य उदाहरण एक API जो आपकी क्वेरी से मेल आइटम की एक सरणी के साथ-साथ कुछ मेटाडेटा युक्त एक JSON ऑब्जेक्ट है। उदाहरण के लिए, मूल रूप से आपके पास एक जेसन सरणी के रूप में कुछ डेटा था, तो आपको उस पर एक स्टेटस हेडर जोड़ने की आवश्यकता होती है, जब तक आप किसी ऑब्जेक्ट में डेटा को नेस्टेड नहीं करते हैं, तब तक आप थोड़ा फंस जाएंगे। एकमात्र नुकसान सृजन/पार्सिंग की जटिलता में मामूली वृद्धि है।

बजाय

[datum0, datum1, datumN] 

की आप

{data: [datum0, datum1, datumN]} 

फिर बाद में आप अधिक जोड़ सकते हैं होगा ...

{status: "foo", data: [datum0, datum1, datumN]} 
83

अंतर एक (हैश रूप में ही है) मानचित्र बनाम सूची।

JSONObject:

  • नामित मूल्यों (कुंजी> मान जोड़ों, tuples या आप उन्हें कॉल करना चाहते हैं जो कुछ भी) शामिल
    • {ID : 1} तरह
  • तत्वों का आदेश है महत्वपूर्ण नहीं
    • {id: 1, name: 'B'} का JSONObject {name: 'B', id: 1} के बराबर है।

JSONArray:

  • शामिल केवल श्रृंखला को महत्व देता
    • [1, 'value'] तरह
  • मूल्यों के आदेश महत्वपूर्ण है
    • [1,'value'] की सरणी नहीं एक ही रूप में ['value',1]

उदाहरण

JSON Object --> { "":""} 

JSON Array --> [ , , , ] 

{"employees":[ 
    {"firstName":"John", "lastName":"Doe"}, 
    {"firstName":"Anna", "lastName":"Smith"}, 
    {"firstName":"Peter", "lastName":"Jones"} 
]} 
+3

संपादित किया है यह गुच्छा का सबसे दिलचस्प जवाब है – dynamic

18

बेस्ट प्रोग्राम के रूप में समझना है। जब वाक्य रचना [] है

जब वाक्य रचना {} है तो यह JsonObject

है तो यह JsonArray

आशा इस वसीयत आप के लिए उपयोगी है!

9

ऑब्जेक्ट: एक ऑब्जेक्ट नाम/मूल्य जोड़े का एक असाधारण सेट है। एक वस्तु {(बाएं ब्रेस) के साथ शुरू होती है और} (दाएं ब्रेस) के साथ समाप्त होती है। प्रत्येक नाम का पालन किया जाता है: (कोलन) और नाम/मूल्य जोड़े अलग-अलग होते हैं, (अल्पविराम)।

enter image description here

सरणी: एक सरणी मूल्यों के एक आदेश दिया संग्रह है। एक सरणी [(बाएं ब्रैकेट) के साथ शुरू होती है और साथ समाप्त होती है] (दायां ब्रैकेट)। मूल्यों को अलग किया जाता है, (अल्पविराम)।

enter image description here

संबंधित मुद्दे