2008-09-18 6 views
19

जेएसओएन टेक्स्ट (RFC 4627) वस्तुओं, सरणी, तारों, संख्याओं, बूलियन मानों (शाब्दिक रूप से true या false) और null का असाधारण प्रतिनिधित्व है। हालांकि, इसमें दिन की तारीख और समय जैसी समय की जानकारी का प्रतिनिधित्व करने के लिए परिभाषित कुछ भी नहीं है, जो अनुप्रयोगों में बहुत आम है। RFC 4627 में रखी गई बाधाओं और व्याकरण को देखते हुए JSON में समय का प्रतिनिधित्व करने के लिए उपयोग में मौजूदा विधियां क्या हैं?JSON में दिनांक और/या समय की जानकारी का प्रतिनिधित्व कैसे करें?

उत्तरदाताओं को ध्यान दें: इस प्रश्न का उद्देश्य उदाहरणों और रिश्तेदार पेशेवरों और विपक्ष (आदर्श रूप से क्षेत्र के अनुभव से) के साथ परिसंचरण में जाने वाली विभिन्न विधियों को दस्तावेज करना है।

उत्तर

2

कोई सेट शाब्दिक नहीं है इसलिए उपयोग करें कि आपके लिए सबसे आसान क्या है। ज्यादातर लोगों के लिए, यह या तो यूटीसी आउटपुट की स्ट्रिंग या यूटीसी-केंद्रित टाइमकोड का एक लंबा-पूर्णांक है।

में थोड़ा और अधिक पृष्ठभूमि के लिए इस पढ़ें: http://msdn.microsoft.com/en-us/library/bb299886.aspx

13

केवल प्रतिनिधित्व है कि मैं उपयोग (हालांकि, बेशक, मेरे अनुभव DOJO तक सीमित है) में देखा है ISO 8601 है, जो अच्छी तरह से काम करता है, और सिर्फ कुछ के बारे में का प्रतिनिधित्व करता है आप शायद सोच सकते हैं।

उदाहरण के लिए, आप उपरोक्त लिंक पर जा सकते हैं।

सकारात्मक:

  • काफी कुछ भी आप संभवतः इसे फेंक सकता है timespans सहित, का प्रतिनिधित्व करता है। (यानी 3 दिन, 2 घंटे।)

विपक्ष:

  • उम्म ... मैं वास्तव में नहीं पता है। शायद इसके अलावा इसे इस्तेमाल करने में थोड़ा सा लग सकता है? यह निश्चित रूप से पार्स करने के लिए पर्याप्त आसान है, अगर इसे पहले से पार्स करने के लिए फ़ंक्शंस में नहीं बनाया गया है।
5

आईएसओ 8601 एक स्वाभाविक पसंद की तरह लगता है, लेकिन अगर आप जावास्क्रिप्ट एक ब्राउज़र में चल साथ यह पार्स करने के लिए चाहते हैं, तो, ब्राउज़र JavaScript Date के कुछ हिस्सों के लिए समर्थन करता है के लिए एक पुस्तकालय का उपयोग करने की आवश्यकता होगी ऑब्जेक्ट जो आईएसओ 8601 तिथियों को पार्स कर सकता है असंगत है, यहां तक ​​कि अपेक्षाकृत नए ब्राउज़र में भी। आईएसओ 8601 के साथ एक और समस्या यह है कि यह एक बड़ा, समृद्ध मानक है, और दिनांक/समय पुस्तकालय इसका केवल एक हिस्सा समर्थन करते हैं, इसलिए आपको उपयोग करने के लिए उपयोग किए जाने वाले पुस्तकालयों द्वारा समर्थित आईएसओ 8601 का एक सबसेट चुनना होगा।

इसके बजाय, मैं 1 9 70-01-01T00: 00Z के बाद मिलीसेकंड की संख्या के रूप में समय का प्रतिनिधित्व करता हूं। यह Date ऑब्जेक्ट के लिए पुराने ब्राउज़र में कन्स्ट्रक्टर द्वारा समझा जाता है, कम से कम आईई 7 पर वापस जा रहा है (जो मैंने सबसे पुराना परीक्षण किया है)।

0

मैं RFC 3339 प्रारूप का उपयोग करने की सलाह देता हूं, जो कि अच्छा और सरल है, और भाषाओं, पुस्तकालयों और उपकरणों की बढ़ती संख्या से समझा जाता है।

दुर्भाग्यवश, आरएफसी 3339, यूनिक्स युग समय, और जावास्क्रिप्ट मिलीसेकंद समय, अभी भी काफी सटीक नहीं हैं, क्योंकि उनमें से कोई भी छलांग सेकंड के लिए खाता नहीं है! किसी बिंदु पर हम सभी को फिर से समय प्रस्तुतियों पर फिर से जाना होगा। शायद अगली बार जब हम इसके साथ किया जा सकता है।

0

ऐसे पुराने प्रश्न पर टिप्पणी करने के लिए खेद है, लेकिन मध्यवर्ती वर्षों में और अधिक समाधान सामने आए हैं।

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

Google के protocol buffers में JSON mapping है जिसमें परिभाषित अर्थशास्त्र के साथ टाइमस्टैम्प प्रकार की धारणा है।

मोंगोडीबी के BSON में Extended JSON है जो { "$date": "2017-05-17T23:09:14.000000Z" } कहता है।

दोनों डेटाटाइम के अलावा और अधिक जटिल संरचनाओं को भी व्यक्त कर सकते हैं।

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