डेवलपर टूल · सिंटेक्स कन्वर्टर्स
TOML में मूल दिनांक-समय प्रकार क्यों है और JSON में नहीं (RFC 3339)
· पेजभूमि
toml json टाइम स्टाम्प्स
TOML इस समूह में प्रथम कैटेगरी की तारीखों और समय वाला एकमात्र प्रारूप है, जो सभी RFC 3339 द्वारा परिभाषित हैं। यह पोस्ट चार TOML दिनांक-समय प्रकारों के बारे में बताती है, क्यों JSON में जानबूझकर कोई नहीं है, और रूपांतरण का उनसे क्या लेना-देना है।
वह दिनांक जो एक स्ट्रिंग बन गई - रिलीज़ दिनांक के साथ एक TOML कॉन्फिगरेशन, JSON में कन्वर्ट किया गया और टेक्स्ट में घटा दिया गया
एक TOML स्थानीय तिथि जैसे `1979-05-27` JSON स्ट्रिंग `"1979-05-27"` बन जाती है। कैलेंडर वर्ण जीवित रहते हैं, लेकिन मूल TOML प्रकार नहीं बचता। उसे परिवर्तित करने पर JSON वापस एक उद्धृत स्ट्रिंग लिखता है, दिनांक टोकन नहीं, और ToolAcre पहले रूपांतरण पर चेतावनी देता है।
यह चुने गए सादे JSON मान में एक अपरिहार्य सीमा है। राउंड ट्रिप को दोषरहित कहने से संरक्षित पाठ और संरक्षित प्रकार का भ्रम हो जाएगा। चेतावनी में पथ और अस्थायी प्रकार दोनों का नाम दिया गया है ताकि समीक्षक यह तय कर सकें कि कोई स्ट्रिंग डाउनस्ट्रीम में स्वीकार्य है या नहीं।
JSON में कोई दिनांक प्रकार क्यों नहीं है - क्रॉकफ़ोर्ड का अतिसूक्ष्मवाद, ISO 8601 स्ट्रिंग कन्वेंशन और मिलीसेकंड-से-युग कन्वेंशन जो अंतर को भरने के लिए प्रतिस्पर्धा करते हैं
JSON यहां पार्स करने से शून्य, बूलियन, संख्याएं, स्ट्रिंग्स, एरे और ऑब्जेक्ट उत्पन्न होते हैं; यह दिनांक ऑब्जेक्ट उत्पन्न नहीं करता है। रिपॉजिटरी उस कार्यान्वयन तथ्य को साबित करती है लेकिन JSON के अतिसूक्ष्मवाद या प्रतिस्पर्धी उद्योग सम्मेलनों के लिए ऐतिहासिक स्पष्टीकरण नहीं देती है।
एप्लिकेशन समझौते द्वारा ISO जैसी स्ट्रिंग्स या युग संख्याओं को अपना सकते हैं, लेकिन वे JSON पर आधारित परंपराएं हैं। सिंटैक्स कन्वर्टर्स मनमाने पाठ से कोई अनुमान नहीं लगाते हैं और TOML अस्थायी मानों को युग अंकगणित में परिवर्तित नहीं करते हैं।
JSON का इस कन्वर्टर में कोई मूल दिनांक प्रकार नहीं है; मूल तर्क भंडार साक्ष्य के बाहर है
TOML चार प्रकार को उजागर करता है: Z या संख्यात्मक ऑफसेट के साथ ऑफ़सेट दिनांक-समय, ज़ोन के बिना स्थानीय दिनांक-समय, स्थानीय दिनांक और स्थानीय समय। smol-toml उन्हें मेटाडेटा ले जाने वाली दिनांक-जैसी वस्तुओं के रूप में दर्शाता है; ToolAcre इसे सामान्य करने से पहले प्रत्येक की पहचान करता है।
भेद एक गंभीर गलती को रोकता है. स्थानीय समय को चुपचाप UTC निर्दिष्ट नहीं किया जाता है, और स्थानीय दिनांक-समय को ज़ोन के बीच स्थानांतरित नहीं किया जाता है। इसकी अनुपस्थित ऑफसेट JSON स्ट्रिंग में अनुपस्थित रहती है।
RFC 3339 नींव के रूप में - ISO 8601 की प्रोफ़ाइल जिसे TOML उधार लेता है, जिसमें स्पेस-सेपरेटर भत्ता भी शामिल है
नॉर्मलाइज़र पार्सर मान के ISO फ़ॉर्मेटर को कॉल करता है और केवल सिंथेटिक `.000` अंश को हटाता है। यह सार्थक भिन्नात्मक सेकंड और स्रोत-उन्मुख स्थानीय बनाम ऑफसेट फॉर्म को संरक्षित करता है। कोड इसे RFC 3339 टेक्स्ट के रूप में वर्णित करता है, लेकिन लेख परीक्षण किए गए आउटपुट से परे विभाजक भत्ते जैसे विनिर्देश खंड का आविष्कार नहीं करता है।
एक ऑफसेट उदाहरण इस परत द्वारा सार्वभौमिक Z मान में परिवर्तित होने के बजाय दिनांक-समय पाठ बना रहता है। यह लिखित प्रतिनिधित्व को बदलने से बचाता है और उस एप्लिकेशन के लिए अस्थायी व्याख्या रखता है जिसके पास यह है।
ToolAcre पूर्ण RFC 3339 अनुपालन विवरण दिए बिना स्रोत-उन्मुख अस्थायी पाठ को संरक्षित करता है
प्रत्येक अस्थायी मान एक स्ट्रिंग बन जाता है, और चेतावनियाँ कहती हैं कि JSON, YAML और XML का इस रूपांतरण मॉडल में कोई दिनांक प्रकार नहीं है। ऑफसेट जानबूझकर नहीं गिराए जाते हैं, और स्थानीय मूल्यों को हासिल नहीं किया जाता है। खोई हुई जानकारी TOML प्रकार की कैटेगरी ही है।
रिवर्स रूपांतरण पर, स्ट्रिंग को उद्धृत किया जाता है क्योंकि लेखक के पास कोई मार्कर नहीं है जो उसे डेटाटाइम पुनर्स्थापित करने के लिए कहे। तारीखों के रूप में मनमाने ढंग से दिखने वाली स्ट्रिंग को दोबारा पार्स करने से सामान्य पहचानकर्ता या लेबल गलत तरीके से टाइप हो जाएंगे और एक ऐसे सम्मेलन का आविष्कार होगा जो JSON द्वारा साझा नहीं किया जाएगा।
कन्वर्टर स्थानीय बनाम ऑफ़सेट वर्तनी को संरक्षित करता है, फिर मूल TOML प्रकार खो देता है
`odt = 1979-05-27T07:32:00Z`, `ldt = 1979-05-27T07:32:00`, `ld = 1979-05-27` और `lt = 07:32:00` का उपयोग करें। JSON में उन वर्तनी के साथ चार तार हैं। चेतावनी ऑफसेट दिनांक-समय, स्थानीय दिनांक-समय, स्थानीय दिनांक और स्थानीय समय पथ सूचीबद्ध करती है।
JSON को वापस TOML में बदलें। प्रत्येक मान उद्धृत किया गया है. एक आंशिक `00.500Z` आंशिक रहता है, जबकि एक पूर्ण-सेकंड मान `.000` प्राप्त नहीं करता है। यह वास्तविक समर्थित व्यवहार है और संरक्षित पाठ बनाम खोए हुए प्रकार को स्पष्ट रूप से प्रदर्शित करता है।
व्यावहारिक उदाहरण: सभी चार TOML अस्थायी प्रकार स्ट्रिंग बन जाते हैं और उद्धृत होकर वापस आते हैं
समय-क्षेत्र नियम लुकअप, डेलाइट-सेविंग ट्रांज़िशन और युग रूपांतरण इस मार्ग का हिस्सा नहीं हैं। ज़ोन के बिना एक स्थानीय दिनांक-समय अधिक जानकारी के बिना एक अद्वितीय क्षण नहीं बन सकता है। Unix टाइमस्टैम्प कन्वर्टर एक अलग अनुबंध के तहत ज्ञात इंस्टेंट को संबोधित करता है।
प्रत्येक परिणामी स्ट्रिंग को JavaScript दिनांक पर फ़ीड न करें और समकक्ष अर्थ न मानें। स्थानीय दिनांक, स्थानीय समय और ज़ोन रहित दिनांक-समय के लिए एप्लिकेशन संदर्भ की आवश्यकता होती है। माइग्रेशन के माध्यम से चेतावनी और फ़ील्ड शब्दार्थ को सुरक्षित रखें।
टेकअवे: TOML जानता है कि तारीख क्या है, JSON केवल जानता है कि स्ट्रिंग क्या है - और सिंटैक्स कन्वर्टर्स पैनल आपके ब्राउज़र में उस अंतर को कैसे दिखाता है
TOML चार लौकिक कैटेगरी को जानता है; JSON को यहां केवल स्ट्रिंग्स प्राप्त होती हैं। ToolAcre वर्तनी को सावधानीपूर्वक संरक्षित करता है और ज़ोन का आविष्कार करने से इनकार करता है, लेकिन मूल प्रकार चला गया है और वापसी पर स्वचालित रूप से पुनर्निर्माण नहीं किया जा सकता है।
प्रत्येक चेतावनी पथ की समीक्षा करें और एक अनुप्रयोग परंपरा को परिभाषित करें जब अस्थायी शब्दार्थ जीवित रहना चाहिए। यदि ऐसी कोई परंपरा मौजूद नहीं है, तो उद्धृत राउंड ट्रिप को समकक्ष मानने के बजाय TOML को आधिकारिक स्रोत के रूप में रखें।
एक ध्वनि सम्मेलन यह भी बताता है कि किन तारों को फिर से और किस संदर्भ में पार्स किया जा सकता है। एक ऑफसेट दिनांक-समय एक पल की पहचान कर सकता है, जबकि एक स्थानीय दिनांक-समय, दिनांक या समय अतिरिक्त नियमों के बिना ऐसा नहीं कर सकता है। जब बाद के चरण में TOML को फिर से बनाने या कार्य शेड्यूल करने की आवश्यकता हो तो मूल प्रकार को सामान्यीकृत स्ट्रिंग के बगल में संग्रहीत करें। अन्यथा स्वीकार करें कि JSON डिस्प्ले टेक्स्ट ले जा रहा है और इसे सार्वभौमिक टाइमस्टैम्प पर चुपचाप प्रचारित करने से बचें।