2012-04-05 9 views
12

जो डेटा मैं अपना पृष्ठ भेज रहा हूं वह JSON में एन्कोड किया गया है, जावास्क्रिप्ट का उपयोग करके पार्स किया गया है और फिर लूप का उपयोग करके एक HTML SELECT तत्व में प्रदर्शित किया गया है। डेटा पहले ही सॉर्ट किया गया है, लेकिन JSON स्ट्रिंग को डीकोड करते समय मुझे सही क्रम रखने में समस्याएं आ रही हैं, जो डेटा पर लागू सॉर्टिंग को रद्द करती है।जावास्क्रिप्ट से JSON को पार्स करते समय ऑर्डर कैसे बनाए रखें?

नमूना डेटा:

{"test":{"3":"third","4":"first","5":"second"}}

यह डाटा का स्वरूप संशोधित करने के लिए संभव नहीं है: {"test":{"4":"first","5":"second","3":"third"}}

jQuery के JSON पार्सर और जावास्क्रिप्ट के eval() फ़ंक्शन का उपयोग करना, मैं निम्नलिखित परिणाम हो रही है और चाबियाँ ("4", "5", "3") एक ही क्रम में रहनी चाहिए। वास्तविक डेटा बहुत जटिल है, लेकिन यह नमूना मेरी समस्या को बहुत अच्छी तरह से दिखाता है।

जावास्क्रिप्ट से इसे पार्स करते समय JSON डेटा के क्रम को कैसे बनाए रख सकता हूं?

+2

जब आप गुण (ऑब्जेक्ट शाब्दिक) का उपयोग कर रहे हैं तो आपको आदेश पर निर्भर नहीं होना चाहिए। केवल सरणी (जावास्क्रिप्ट और जेएसओएन दोनों में) ऑर्डर को सुरक्षित रखें। –

+0

मुझे परेशान करता है कि http://json.parser.online.fr/ पर कस्टम JSON पार्सर बस ठीक काम कर रहा है। अफसोस की बात है, मैं डेटा के प्रारूप को संशोधित नहीं कर सकता या मैं सरणी का उपयोग कर रहा हूं। :( – Wolf

+1

आपको इस डेटा को जो भी बनाया गया है, उसे शिकायत करनी चाहिए कि उन्होंने JSON प्रतिनिधित्व को डिजाइन करने का एक भयानक काम किया है। यदि आदेश महत्वपूर्ण है तो ऑब्जेक्ट का उपयोग नहीं किया जाना चाहिए। – Phrogz

उत्तर

11

यदि आप आदेश रखना चाहते हैं तो एक सरणी का उपयोग करें। यह जावास्क्रिप्ट में ऑर्डर को बनाए रखने का एकमात्र तरीका होना चाहिए।

+1

यह संभव नहीं है डेटा के प्रारूप को संशोधित करने के लिए, दुख की बात है :(( – Wolf

+2

@Wolf फिर आपको गुणों के क्रम को संग्रहीत करने वाले डेटा के अतिरिक्त एक सरणी रखने के लिए इसे स्वयं को पार्स करने की आवश्यकता होगी। जावास्क्रिप्ट बस पुनरावृत्ति की गारंटी नहीं देता है किसी ऑब्जेक्ट पर गुणों का क्रम। – Phrogz

+0

@ प्रागोज़ मैं तैयार किए गए समाधान की उम्मीद कर रहा था, लेकिन मुझे लगता है कि घर से बने रहने का रास्ता तय करना होगा। मैं यह प्रश्न कुछ समय दूंगा ई, शायद कोई कुछ के साथ आ जाएगा। – Wolf

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