2012-06-05 15 views
14

लिखने के लिए मैं कैसे json का अध्ययन कर रहा हूँ और अगर यह सही तरीके से एक बहु आयामी json वस्तु है कि nested.I लिखा लिखना है मैं सोच रहा था:एक नेस्टेड बहु आयामी json वस्तु

var foo = { 
    "logged_in":true, 
    "town":"Dublin", 
    "state":"Ohio", 
    "country":"USA", 
    "products":2, 
    "0":{ 
     "pic_id":"1500", 
     "description":"Picture of a computer", 
     "localion":"img.cloudimages.us/2012/06/02/computer.jpg", 
     "type":"jpg", 
     "childrenimages":2 

     "0":{ 
     "pic_id":"15011", 
     "description":"Picture of a cpu", 
     "localion":"img.cloudimages.us/2012/06/02/mycpu.png", 
     "type":"png" 
      } 
     "1":{ 
     "pic_id":"15012", 
     "description":"Picture of a cpu two", 
     "localion":"img.cloudimages.us/2012/06/02/thiscpu.png", 
     "type":"png" 
      } 
    }, 
    "1":{ 
     "pic_id":"1501", 
     "description":"Picture of a cpu", 
     "localion":"img.cloudimages.us/2012/06/02/cpu.png", 
     "type":"png" 
    } 
}; 

यह सही है या अगर कोई वस्तु बहुत गहराई से घिरा हुआ हो तो मुझे एक सम्मेलन का पालन करना चाहिए।

+1

आप एक चर जिसका नाम का तात्पर्य है कि यह एक स्ट्रिंग मान ... –

+0

यदि आप मतलब "0" और "1" एक सरणी तुम करोगी में वस्तुओं का प्रतिनिधित्व करने के धारण करने के लिए एक वस्तु मान निर्दिष्ट कर रहे हैं हमें सरणी नोटेशन '[]' और "0" या "1" निर्दिष्ट न करें। Https://gist.github.com/2875889 जैसे कुछ, ध्यान दें, आपने जो लिखा है उसके साथ बहुत सी छोटी समस्याएं हैं, जो नीचे दिए गए बिंदु को रेखांकित करती हैं .... JSON नहीं लिखें। –

+0

धन्यवाद जेम्स के लिए जेम्स। – Gandalf

उत्तर

19

अंकित वस्तु के बजाए सरणी का उपयोग करने पर विचार करें। json में

सरणी का उपयोग कर परिभाषित कर रहे हैं [] http://www.json.org/

यहाँ एक उदाहरण है:

var foo = { 
    "logged_in":true, 
    "town":"Dublin", 
    "state":"Ohio", 
    "country":"USA", 
    "products": 
    [ 
     { 
      "pic_id":"1500", 
      "description":"Picture of a computer", 
      "localion":"img.cloudimages.us/2012/06/02/computer.jpg", 
      "type":"jpg", 
      "childrenimages": 
      [ 
       { 
        "pic_id":"15011", 
        "description":"Picture of a cpu", 
        "localion":"img.cloudimages.us/2012/06/02/mycpu.png", 
        "type":"png" 
       }, 
       { 
        "pic_id":"15012", 
        "description":"Picture of a cpu two", 
        "localion":"img.cloudimages.us/2012/06/02/thiscpu.png", 
        "type":"png" 
       } 
      ] 
     }, 
     { 
      "pic_id":"1501", 
      "description":"Picture of a cpu", 
      "localion":"img.cloudimages.us/2012/06/02/cpu.png", 
      "type":"png" 
     } 
    ], 
}; 

(मुझे माफ कर दो अगर मैं या तो बंद करने {या भूल गया [या, अपनी सुंदर में कोड टाइप करने के लिए कठिन अतः: पी)

इस तरह आप भी न

"products":2, 
तरह की गिनती की आवश्यकता है

या

"childrenimages":2 

आप बस

foo.products.length 

या

कर
foo.products[0].childrenimages.length 

गुड लक :)

+1

यह वास्तव में एक संकेत सुझाव है, संख्यात्मक इंडेक्स का उपयोग करते हुए ऑब्जेक्ट प्रॉपर्टी नामों का कोई मतलब नहीं है। –

-1

JSON न लिखें। गंभीरता से, सरल विन्यास फाइलों को छोड़कर, जेएसओएन मत लिखें।

आपके पास अधिकांश भाषाओं में ऑब्जेक्ट्स को JSON स्ट्रिंग में कनवर्ट करने की सुविधाएं हैं (यदि कोई नहीं है)।

पीएचपी: json_encode($array);

जावास्क्रिप्ट: JSON.stringify(obj);

आदि

लेखन JSON मैन्युअल अक्सर त्रुटियों वाक्यविन्यास की ओर जाता है। वह प्रकार जो आपको सिरदर्द देता है जब तक आप उस गायब कॉमा या डब्ल्यू/ई को नहीं देखते। ऐसा करने के लिए आपके पास अच्छे उपकरण हैं, उनका उपयोग करें। आप एक्सएमएल की तुलना कर सकते हैं, लेकिन JSON के पास कोई टूल नहीं है (आईडीई, टेक्स्ट एडिटर) कह रहा है कि "यह वाक्यविन्यास गलत है" जबकि आप इसे टाइप कर रहे हैं। उदाहरण के लिए, कोई संपादक आपको नहीं बताएगा कि आपने डबल के बजाय एक सिंगल कोट का उपयोग किया था।

बस जेएसओएन मत लिखें।

+1

जेएसओएन लिखने के खिलाफ आपके बयान क्या हैं? मुझे आपके जवाब में कोई बात नहीं है। –

+0

क्योंकि जेएसओएन मैन्युअल रूप से लिखना अक्सर त्रुटियों की ओर जाता है जो तब नहीं होगा जब आप अधिकांश भाषाओं द्वारा प्रदान की गई विधियों का उपयोग करते हैं। जब आप उनसे बच सकते हैं तो इस तरह की त्रुटि का जोखिम क्यों उठा रहे हैं? –

+0

@skwee आप निश्चित हैं? वह आपको लैंगेज में मूल वस्तु बनाने के लिए सुझाव दे रहा है और उसके बाद जेसन को स्ट्रिंग कर रहा है: पी तो आप जो कर रहे हैं वह वास्तव में जेएसओएन लिख रहा है, जो यह विफल नहीं होता है और – ShrekOverflow

0

यहाँ अपने डेटा के लिए उचित प्रारूप है कि सिर्फ एक गुण है कि कर रहे हैं भी वस्तुओं युक्त वस्तु है,

{ 
    "logged_in":true, 
    "town":"Dublin", 
    "state":"Ohio", 
    "country":"USA", 
    "products":2, 
    "productinfo":[ 
     { 
      "0":{ 
       "pic_id":"1500", 
       "description":"Picture of a computer", 
       "localion":"img.cloudimages.us/2012/06/02/computer.jpg", 
       "type":"jpg", 
       "childrenimages":2 
      }, 
      "1":{ 
       "pic_id":"15011", 
       "description":"Picture of a cpu", 
       "localion":"img.cloudimages.us/2012/06/02/mycpu.png", 
       "type":"png" 
      }, 
      "2":{ 
       "pic_id":"15012", 
       "description":"Picture of a cpu two", 
       "localion":"img.cloudimages.us/2012/06/02/thiscpu.png", 
       "type":"png" 
      }, 
      "3":{ 
       "pic_id":"1501", 
       "description":"Picture of a cpu", 
       "localion":"img.cloudimages.us/2012/06/02/cpu.png", 
       "type":"png" 
      } 
     } 
    ] 
} 
0

वास्तव में एक सरणी तुम वहाँ है कि नहीं है यही कारण है कि (ध्यान दें मैं कुछ डेटा में कोई बदलाव)। आप कुछ कॉमा भी खो रहे हैं, इसलिए यह संकलित भी नहीं होगा।

इस मामले में आपके लिए अधिक सुविधाजनक हो सकता है कि आपके JSON को बनाने के लिए दोनों arrays और ऑब्जेक्ट्स का उपयोग करना है।उदाहरण के लिए:

var this_json_string = { 
    "state":"Ohio", 
    "country":"USA", 
    "products":[ 
     { 
      "pic_id":"1500", 
      "description":"Picture of a computer", 
     }, 

     { 
      "pic_id":"15011", 
      "description":"Picture of a cpu" 
     }, 
     { 
      "pic_id":"15012", 
      "description":"Picture of a cpu two" 
     }, 
     { 
      "pic_id":"1501", 
      "description":"Picture of a cpu" 
     } 
    ] 
}; 
संबंधित मुद्दे