हिन्दी

डेवलपर टूल · सिंटेक्स कन्वर्टर्स

चार डेटा मॉडल की तुलना: JSON, YAML, TOML और XML कभी 1 को मैप क्यों नहीं करते:1

· पेजभूमि

डेटा-प्रारूप json yaml

चार अलग-अलग डेटा-मॉडल आकार एक प्रतिबंधित रूपांतरण केंद्र पर मिलते हैं
मूल ToolAcre वेक्टर चित्रण

इन प्रारूपों के बीच प्रत्येक रूपांतरण कहीं न कहीं हानिपूर्ण है, क्योंकि प्रत्येक को एक अलग डेटा मॉडल के आसपास डिज़ाइन किया गया था। यह पोस्ट उनके प्रकार के सिस्टम और संरचनाओं की तुलना करती है ताकि आप अनुमान लगा सकें कि रूपांतरण क्या रखेगा और क्या गिराएगा।

वह कॉन्फ़िगरेशन जो राउंड-ट्रिप नहीं होगा - एक फ़ाइल तीन प्रारूपों के माध्यम से परिवर्तित हुई और फ़ील्ड जो अलग-अलग वापस आईं

सुरक्षित संख्याओं, स्ट्रिंग्स, बूलियन, एरे और नेस्टेड ऑब्जेक्ट वाली एक सामान्य वस्तु JSON-to-YAML-to-JSON और JSON-to-TOML-to-JSON परीक्षणों से बच सकती है। TOML से पहले एक शून्य जोड़ें, TOML से एक डेटाटाइम, मिश्रित XML सामग्री या एक YAML टिप्पणी, और कुछ मूल्य या स्रोत जानकारी परिवर्तन।

उपयोगी प्रश्न यह नहीं है कि क्या रूपांतरण सार्वभौमिक रूप से हानिप्रद है। यह कौन सा इनपुट वर्ग है और कौन सी दिशा आपके लिए आवश्यक गुणों को संरक्षित करती है। ToolAcre की चेतावनियाँ और इनकार प्रत्येक जोड़ी को एक विपणन वादे तक सीमित करने के बजाय उस मैट्रिक्स को देखने योग्य बनाते हैं।

एक प्रतिनिधि कॉन्फ़िगरेशन कुछ जोड़ियों के माध्यम से राउंड-ट्रिप कर सकता है, लेकिन प्रत्येक समर्थित आकार में नहीं

JSON इस पार्सर में शून्य, बूलियन, संख्याएं, स्ट्रिंग, सरणी और ऑब्जेक्ट प्रदान करता है। इसमें कोई टिप्पणी, डेटाटाइम प्रकार या साझा-संदर्भ वाक्यविन्यास नहीं है। JavaScript संख्याओं को पार्स करता है क्योंकि IEEE-754 दोगुना हो जाता है, इसलिए सुरक्षित सीमा से परे पहले से ही गैर-उद्धृत पूर्णांक किसी अन्य लेखक द्वारा देखे जाने से पहले सटीकता खो सकता है।

ऑब्जेक्ट कुंजियाँ स्ट्रिंग हैं, और वैकल्पिक सॉर्टिंग उनकी प्रस्तुति को बदल देती है। सारणियाँ क्रमबद्ध रहती हैं। सख्त पार्सिंग टिप्पणियों, अनुगामी अल्पविरामों और गैर-परिमित संख्यात्मक टोकन को अस्वीकार करता है, जिससे अन्य पाठकों के लिए एक कॉम्पैक्ट आधार रेखा स्थापित होती है।

JSON का मूल्य मॉडल जैसा कि इस JavaScript कार्यान्वयन द्वारा उपयोग किया जाता है

ToolAcre प्रतिबंधित JSON या कोर स्कीमा के माध्यम से YAML स्वीकार करता है। एंकर और उपनाम हल हो जाते हैं, टिप्पणियाँ गायब हो जाती हैं, धाराएँ सारणी बन जाती हैं, डुप्लिकेट कुंजियाँ अंतिम मान को चेतावनी के साथ रखती हैं, और पुनरावर्ती या विस्फोटक उपनाम अस्वीकार कर दिए जाते हैं।

कस्टम टैग, बाइनरी, टाइमस्टैम्प, सेट और भाषा-ऑब्जेक्ट कंस्ट्रक्टर अस्वीकार कर दिए जाते हैं। कोर इन्फिनिटी और NaN चेतावनियों के साथ लक्ष्य प्रारूप में शून्य हो जाते हैं। यह जानबूझकर YAML के व्यापक टैग सिस्टम का एक उपसमूह है, पूर्ण YAML ऑब्जेक्ट समर्थन का दावा नहीं है।

प्रतिबंधित YAML मॉडल ToolAcre स्वीकार करता है

TOML एक तालिका से शुरू होता है और स्ट्रिंग्स, हस्ताक्षरित पूर्णांक, फ्लोट्स, बूलियन, एरे, टेबल और चार अस्थायी प्रकारों का समर्थन करता है। इसमें कोई शून्य नहीं है. ToolAcre दिनांक और समय को स्रोत-उन्मुख स्ट्रिंग में और विस्तृत पूर्णांक को अंक खोने के बजाय दशमलव स्ट्रिंग में परिवर्तित करता है।

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

TOML की मूल तालिका, अस्थायी मान और शून्य सीमा

XML को `@` विशेषताओं, सामान्य चाइल्ड कुंजियाँ, `#text`, `#cdata`, दोहराए गए सहोदर सरणियों और शाब्दिक नामस्थान उपसर्गों के साथ एक पेड़ के रूप में पेश किया गया है। टिप्पणियाँ, घोषणा और प्रसंस्करण निर्देश हटा दिए गए हैं। मिश्रित-पाठ स्थिति खो गई है, और दोहराव प्रकट होने से पहले एक बनाम अनेक को नहीं जाना जा सकता है।

जब तक अनुमान का चयन नहीं किया जाता तब तक मान स्ट्रिंग के रूप में पढ़े जाते हैं। JSON से लिखा गया शून्य एक खाली तत्व बन जाता है और वापसी पर इसे खाली स्ट्रिंग से अलग नहीं किया जा सकता है। प्रत्येक DOCTYPE को अस्वीकार कर दिया जाता है, और अमान्य नाम दोबारा लिखे जाने के बजाय क्रमांकन बंद कर देते हैं।

ToolAcre का XML प्रक्षेपण: तत्व, विशेषताएँ, पाठ और शाब्दिक उपसर्ग

नौ दिशाओं का जहाज: JSON से YAML, XML, TOML और CSV; YAML से JSON और TOML; TOML से JSON और YAML; XML से JSON। JSON-आकार के सामान्य मान JSON और YAML के बीच सबसे अच्छे होते हैं। TOML दिनांक और शून्य सीमाओं का परिचय देता है। XML को नामकरण और नोड-कैटेगरी सम्मेलनों की आवश्यकता है।

CSV केवल एक फ्लैट आउटलायर और आउटपुट है। सारणियाँ या चयनित वस्तुएँ पंक्तियाँ बन जाती हैं, नेस्टेड पथ बिंदीदार स्तंभों में समतल हो जाते हैं, खाली पाठ के साथ अशक्त विलय हो जाते हैं और सूत्र-जैसी स्ट्रिंग निष्प्रभावी हो जाती हैं। CSV-to-JSON, XML-to-TOML और अन्य अनुपस्थित जोड़ियों का अनुमान लगाने के बजाय उन्हें अस्वीकार कर दिया जाता है।

भेजे गए नौ दिशाओं के लिए संगतता मैट्रिक्स, केवल आउटपुट के रूप में CSV के साथ

बाइनरी प्रारूप और स्कीमा भाषाएँ दायरे से बाहर हैं। एक स्कीमा सूची कार्डिनैलिटी को पुनर्स्थापित कर सकती है या व्यावसायिक आकृतियों को मान्य कर सकती है, जबकि बाइनरी एन्कोडिंग बाइट-स्तरीय प्रकारों और फ़्रेमिंग का परिचय देती है जो यहां प्रस्तुत नहीं किए गए हैं। कन्वर्टर कभी भी उन क्षमताओं का दावा नहीं करता है।

न ही वाक्यविन्यास रूपांतरण अनुप्रयोग की वैधता सिद्ध करता है। एक साफ़ कुबेरनेट्स-आकार का YAML, XML ऑर्डर संदेश या TOML प्रोजेक्ट फ़ाइल अभी भी लक्ष्य अनुबंध का उल्लंघन कर सकती है। सिंटैक्स मैपिंग का निरीक्षण करने के बाद डोमेन सत्यापनकर्ता का उपयोग करें।

टेकअवे: मॉडल चुनें, फिर सिंटैक्स - और कैसे सिंटैक्स कन्वर्टर्स पैनल आपको रूपांतरण करने से पहले रूपांतरण का परीक्षण करने देता है

विराम चिह्न चुनने से पहले डेटा मॉडल चुनें. यदि टिप्पणियाँ और उपनाम मायने रखते हैं, तो JSON हॉप उन्हें संरक्षित नहीं कर सकता। यदि शून्य मायने रखता है, तो TOML आउटपुट इसे बदल देता है। यदि ऑर्डर की गई मिश्रित सामग्री मायने रखती है, तो एक सादा JSON प्रक्षेपण अपर्याप्त है। यदि गंतव्य एक तालिका है, तो नेस्टेड JSON को एक स्पष्ट फ़्लैटनिंग कन्वेंशन की आवश्यकता होती है।

एक प्रतिनिधि दस्तावेज़ का परीक्षण करने और प्रत्येक चेतावनी को पढ़ने के लिए ToolAcre का उपयोग करें। परिणाम एक ठोस जोड़ी और इनपुट के बारे में सबूत है, सभी रूपांतरणों को दोषरहित या प्रत्येक समर्थित पार्सर को पूर्ण कहने की अनुमति नहीं है।

आपकी सेवा के लिए मायने रखने वाली सीमाओं से प्रतिनिधि दस्तावेज़ बनाएं: शून्य, खाली पाठ, एक बड़ा पहचानकर्ता, एक तारीख जैसी स्ट्रिंग, एक दोहराया रिकॉर्ड, एक टिप्पणी या उपनाम यदि YAML शामिल है, और मिश्रित पाठ यदि XML शामिल है। प्रत्येक समर्थित हॉप के बाद सामान्यीकृत मानों की तुलना करें और परिणाम के साथ चेतावनियाँ बनाए रखें। वह मैट्रिक्स किसी परिचित वाक्यविन्यास के लिए अस्पष्ट प्राथमिकता के बजाय चुने हुए मॉडल के लिए एक निर्णय कलाकृति बन जाता है।