2010-11-30 20 views
26
var myJSON = { 
       "list1" : [ "1", "2" ], 
       "list2" : [ "a", "b" ], 
       "list3" : [ { "key1" : "value1" }, { "key2" : "value2" } ], 
       "not_a_list" : "11" 
      }; 

मैं जावास्क्रिप्ट में इस JSON संरचना को गतिशील रूप से कैसे बना सकता हूं? Google मुझे कुछ पुश कमांड का उपयोग करने के लिए कहता है, लेकिन मुझे केवल विशिष्ट मामले मिल गए हैं। तो मैं "listX" और "not_a_list" में डेटा दर्ज करने के लिए क्या लिखूं। एक नई सूची बनाने के साथ-साथ संलग्न करना। साथ पूरी प्रक्रिया begninning:मैं जावास्क्रिप्ट में जेएसओएन गतिशील रूप से कैसे बना सकता हूं?

myJSON.list1 = ["1","2"]; 

आप न गुण का नाम जानते हैं, तो आप का उपयोग करने के:

var myJSON = {}; 
+0

क्या आपको वास्तव में जेएसओएन (जो स्ट्रिंग है) या घोंसला जावास्क्रिप्ट ऑब्जेक्ट्स, सरणी, तारों और संख्याओं का संग्रह (जिसे जेएसओएन को क्रमबद्ध किया जा सकता है) का मतलब है? – Quentin

उत्तर

53

सबसे पहले, मुझे लगता है कि आप इसे गलत बात कह रहे हैं। "जेएसओएन" का अर्थ है "जावास्क्रिप्ट ऑब्जेक्ट नोटेशन" - यह केवल एक स्ट्रिंग में कुछ डेटा का प्रतिनिधित्व करने के लिए एक विनिर्देश है जो स्पष्ट रूप से जावास्क्रिप्ट ऑब्जेक्ट (और सरणी, स्ट्रिंग, संख्या और बूलियन) अक्षरों की नकल करता है। आप एक जावास्क्रिप्ट ऑब्जेक्ट को गतिशील रूप से बनाने की कोशिश कर रहे हैं - इसलिए जो शब्द आप खोज रहे हैं वह "ऑब्जेक्ट" है।

उस पैडेंट्री के रास्ते से, मुझे लगता है कि आप ऑब्जेक्ट और सरणी गुणों को सेट करने के तरीके से पूछ रहे हैं।

// make an empty object 
var myObject = {}; 

// set the "list1" property to an array of strings 
myObject.list1 = ['1', '2']; 

// you can also access properties by string 
myObject['list2'] = []; 
// accessing arrays is the same, but the keys are numbers 
myObject.list2[0] = 'a'; 
myObject['list2'][1] = 'b'; 

myObject.list3 = []; 
// instead of placing properties at specific indices, you 
// can push them on to the end 
myObject.list3.push({}); 
// or unshift them on to the beginning 
myObject.list3.unshift({}); 
myObject.list3[0]['key1'] = 'value1'; 
myObject.list3[1]['key2'] = 'value2'; 

myObject.not_a_list = '11'; 

कि कोड उद्देश्य यह है कि आप अपने प्रश्न में निर्दिष्ट (सिवाय इसके कि मैं फोन यह myJSON के बजाय MyObject) का निर्माण होगा। गुणों तक पहुंचने के बारे में अधिक जानकारी के लिए, मैं Mozilla JavaScript Guide और JavaScript: The Good Parts पुस्तक की अनुशंसा करता हूं।

+0

"चाबियाँ संख्याएं हैं" (और थोड़ा pedantic होने के बारे में): यह काफी नहीं है, चाबियाँ हमेशा वस्तुओं (सरणी सहित) में तार होती हैं, और '[0]' आदि स्पष्ट रूप से '[" 0 "]' आदि में बदल जाती हैं। (उदाहरण के लिए, https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys देखें)। –

12

myJSON के रूप में एक वस्तु तुम सिर्फ उसके गुण सेट कर सकते हैं, उदाहरण के लिए है सरणी पहुँच वाक्य रचना:

myJSON['list'+listnum] = ["1","2"]; 

आप संपत्ति में से एक के लिए एक तत्व जोड़ना चाहते हैं, तो आप कर सकते हैं;

myJSON.list1.push("3"); 
संबंधित मुद्दे

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