क्या हम XML को JSON से पूरी तरह बदल सकते हैं? [बन्द है]


78

मुझे यकीन है कि बहुत सारे डेवलपर्स XML और JSON से परिचित हैं , और उन्होंने दोनों का उपयोग किया है। इस प्रकार यह बताने का कोई मतलब नहीं है कि वे क्या हैं, और उनका उद्देश्य क्या है, संक्षेप में भी।

यदि हम उनकी अवधारणाओं को मैप करने की कोशिश करते हैं, तो हम कह सकते हैं (यदि मैं गलत हूं तो मुझे सुधारें):

  1. XML टैग JSON के बराबर हैं {}
  2. XML विशेषताएँ JSON गुणों के बराबर हैं
  3. XML टैग संग्रह JSON के बराबर है []

केवल एक चीज जो मैं सोच सकता हूं, जो कि JSON में मौजूद नहीं है, XML नामस्थान है

सवाल यह है कि इस मैपिंग को देखते हुए, और यह देखते हुए कि JSON इस मैपिंग में बहुत हल्का है, क्या हम XML के बिना भविष्य में (या कम से कम सैद्धांतिक रूप से एक दुनिया के बारे में सोच सकते हैं) देख सकते हैं, लेकिन JSON के साथ सब कुछ XML करता है? क्या हम JSON का उपयोग हर जगह कर सकते हैं XML का उपयोग किया जाता है?

पुनश्च: कृपया ध्यान दें कि मैंने यह प्रश्न देखा है । यह कुछ मैं यहाँ पूछ रहा हूँ से पूरी तरह से अलग है। इस प्रकार डुप्लिकेट का उल्लेख न करें ।


14
हम स्पष्ट रूप से एस-एक्सप्रेशंस के साथ उस ओवरब्लोएटेड डिज़ाइन किए गए सामान को बदल सकते हैं (और कर सकते हैं)। एक्सएमएल के बिना दुनिया वास्तव में एक बेहतर जगह होगी, लेकिन यह दुर्भाग्य से, एक इच्छाधारी सोच के अलावा कुछ भी नहीं है।
एसके-तर्क

19
ओह। मैं इन सवालों से घृणा करता हूं। मुझे लगता है कि यह वास्तव में नौकरी के लिए सही उपकरण का उपयोग करने के लिए एक मामला है, और यह नहीं कि क्या कोई दूसरे को पूरी तरह से बदल सकता है। कंप्यूटर के साथ भी दुनिया में बहुत कम निरपेक्षताएं हैं। मैं JSON के साथ मेरे द्वारा किए जाने वाले किसी भी काम को करने की कल्पना नहीं कर सकता था, कम से कम जहां संबंधित प्रौद्योगिकियां अब खड़ी हैं।
फिलिप रेगन

2
@Philip, यह किसी चीज़ को गिराने का सवाल नहीं है। यह सिर्फ यह देखने की कोशिश करता है कि JSON में क्या कमी है, ताकि हम इसे सुधार सकें। :)
सईद नेमाटी

4
दो तकनीकों के बीच अंतर के बारे में एक चर्चा यह देखने के लिए कि जहां सुधार किया जा सकता है, यह पूछने की तुलना में बहुत अलग है कि क्या एक को दूसरे के साथ बदला जा सकता है। पूर्व बाद की तुलना में अधिक विद्वतापूर्ण समीक्षा है जो किसी भी चीज़ की तुलना में निराशा से अधिक विरोधी लगता है
फिलिप रेगन

12
यह काल्पनिक नहीं है। JSON को XML के पास एक सुविधा की कमी लगती है।
S.Lott

जवाबों:


153

वह चीज़ जो XML को अपनी शक्ति देती है और इसकी बहुत सी जटिलता मिश्रित सामग्री है। सामान इस तरह से:

<p>A <b>fine</b> mess we're in!</p>

JSON में भी ऐसा करने की कोशिश न करें, या इसे पारंपरिक प्रोग्रामिंग भाषाओं में हेरफेर न करें। वे नौकरी के लिए तैयार नहीं थे।

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


33
+1: यह विशिष्ट विशेषता है। बहुत बढ़िया बिंदु।
S.Lott

7
@ मिचेल, आपने मुझे कुछ मूल्यवान सिखाया है। यह एक बेहतरीन जवाब है। +1।
सईद नेमाटी

9
.... पी, A बी तत्व के 3 नोड्स इंडी हैं , और 'हम में गड़बड़ कर रहे हैं!'। यह एक सरणी है, जिसे आप केवल JSON में समझा सकते हैं।
गुप्त

5
@ रब नहीं, लेकिन मैं समझा रहा हूं कि आप HTML द्वारा व्यक्त की गई चीजों को अधिक स्पष्टता में परिभाषित कर सकते हैं, और शायद JSON के माध्यम से तेजी से पार्सिंग कर सकते हैं (विभिन्न प्रकार के नोड्स खोजने के लिए पाठ के कम पार्सिंग की आवश्यकता होती है)। यदि HTML JSON-ML होता, तो हमारे पास अधिक देव हो सकते हैं जो वास्तव में DOM, टेक्स्ट नोड्स और बाइंडिंग को समझते हैं।
गुप्तचर

5
@ByrneReese: हाँ यह XML है, और हाँ यह मान्य है। यह भी HTML बिंदु के पास है; वास्तव में, एक्सएचटीएमएल भी वैध एक्सएमएल है। :-)
मार्टिज़न

31

मुख्य अंतर, मुझे लगता है, इस तथ्य में है कि XML को अपने dtd और सब कुछ के साथ स्व-व्याख्या करने के लिए डिज़ाइन किया गया है।

JSON के साथ, आपको प्राप्त डेटा के बारे में बहुत कुछ ग्रहण करना होगा।


7
"XML को स्व-व्याख्या करने के लिए डिज़ाइन किया गया है"। क्या आप इसके लिए एक लिंक या एक संदर्भ प्रदान कर सकते हैं? मैं इसे XML के लिए W3C मानकों में नहीं देखता हूं, और मैं सोच रहा हूं कि यह धारणा कहां से आती है। मैं एक शहरी डिजाइन की तरह लगता है कि एक निर्दिष्ट डिजाइन लक्ष्य से अधिक है।
एस.लॉट।

6
@ S.Lott: मुझे लगता है कि उसके द्वारा जो अर्थ है, वह XML टैग्स की प्रकृति है, और स्वयं में, टैग की गई सामग्री को स्व-व्याख्यात्मक बनाने की अनुमति देता है, अर्थात, DTDs वैकल्पिक हैं ताकि अच्छी तरह से बनाई गई XML को एक के बिना पार्स किया जा सके। लेकिन मैं इस मुद्दे पर आपके विचार से सहमत हूं क्योंकि, तकनीकी रूप से, JSON में एक ही क्षमता है, इसलिए मुझे आत्म-स्पष्टीकरण मुख्य अंतर नहीं दिखता है (मुझे यकीन नहीं है कि यह मतदान क्यों होता रहता है), बल्कि माइकल के निशान पर अधिक है।
फिलिप रीगन

5
@ S.Lott ने सहमति व्यक्त की। मुझे कहना पड़ेगा कि JSON यहाँ json.org/example.html समझने में आसान है और वर्बोसिटी की कमी के कारण संबद्ध XML की तुलना में बेहतर स्व-दस्तावेज है।
डग टी।

4
@ मिचेल बोर्गवर्ड: बिना पूर्ण XSD (कुछ प्रकार के ऑन्कोलॉजी समर्थन सहित) टैग नाम मुझे कुछ भी नहीं बताते हैं। "सार्थक" सामान्य रूप से पूरा करना कठिन है। यह मुझे स्पष्ट नहीं करता है कि उत्तर में "आत्म-व्याख्या" का क्या अर्थ है। और मेरे पास इस बात का सबूत नहीं है कि यह XML के लिए एक डिज़ाइन लक्ष्य था।
S.Lott

4
@Philip Regan: जैसा कि "स्व-स्पष्टीकरण कोड" के साथ, यह XML की विशेषता नहीं प्रतीत होता है । यदि यह सिर्फ एक सार्वभौमिक कार्यान्वयन उद्देश्य है जो सभी सॉफ्टवेयर भाषाओं (कोड, डेटा एक्सेस, मार्कअप, जो भी हो) पर लागू होता है, तो शायद लोगों को विशेष रूप से XML के साथ इसका उल्लेख नहीं करना चाहिए।
S.Lott

21

JSON का शाब्दिक अनुवाद अक्सर कम संक्षिप्त और कम स्पष्ट होता है। विचार करें:

<foo>
   <x:bar x:prop1="g">
      <quuz />
   </bar>
</foo>

सबसे प्रभावी JSON प्रतिनिधित्व मैंने इसके बारे में देखा है:

{"localName":"foo",
 "children": // you need to have a special array to hold all children
 [
    {"localName": "bar",
     "namespace": "x"
        // once again, to ensure that there are no collisions,
        // attributes should be brought out into their own JSON structure 
        "attributes":[
            {"localName":"prop1",
             "namespace":"x",
             "value":"g"}
        ],
         "children":[
             {"name":"quux"}
         ]
     }
 ]}

अब, एक संपूर्ण XML फ़ाइल के लिए कल्पना करें। मैं यह नहीं कह रहा हूं कि JSON में अपनी जगह नहीं है, लेकिन XML को खारिज नहीं किया जाना चाहिए।


8
अब एसएक्सएमएल पर विचार करें:(foo (x:bar (@ (x:prop1 "g")) (quuz)))
एसके-लॉजिक

2
@ एसके-लॉजिक: यह एक तुच्छ उदाहरण के लिए बहुत अच्छा है, लेकिन मैं एक किताब की तरह - गहरी नेस्टेड, मिश्रित सामग्री - की कल्पना नहीं कर सकता। मुझे लगता है कि एसएक्सएमएल उतना ही एक अकादमिक अभ्यास है जितना कि कुछ भी।
फिलिप रेगन

3
@Philip Regan: किसी भी कठिन एस-ऍक्स्प को राइटिंग कैसे कहा जा सकता है, तब चर्वोनिटिस का उपयोग करना, जब यह एक तुच्छ 1: 1 कम क्रिया रूप में बदल जाता है?
मआर्टिनस

@maartinus: मेरी विशेषज्ञता का क्षेत्र पुस्तक प्रकाशन में है: किसी भी प्रकार की पाठ्यपुस्तकें गहन, जटिल जानवरों के साथ हैं जिनमें स्पष्ट प्रबंधन की आवश्यकता होती है। DocBook और DITA ऊपर दिए गए उदाहरण की तुलना में बहुत अधिक पठनीय है।
फिलिप रेगन

1
@Philip Regan, SXML को संपादित करना बहुत आसान है, एक्सएमएल के बिल्कुल विपरीत। और निश्चित रूप से यह प्रोटोकॉल के लिए एक बेहतर विकल्प है, जो उपलब्ध टूलिंग की श्रेष्ठता का उल्लेख करने के लिए अनावश्यक है।
तर्क

14

JSON और XML दोनों डेटा स्वरूपित करने के तरीके हैं। दोनों इसे पूरी तरह से अच्छी तरह से करने में सक्षम हैं, तो क्या JSON XML सब कुछ करता है? हाँ।

लेकिन ..... एक अधिक प्रासंगिक सवाल यह नहीं हो सकता है कि XML / JSON क्या कर सकता है, बल्कि आप XML / JSON के साथ क्या कर सकते हैं ।

ऐसे कई काम हैं जो आप XML के साथ कर सकते हैं जो मुझे नहीं लगता कि आप JSON के साथ कर सकते हैं, जैसे कि XLST के साथ अनुवाद, XPath के साथ खोजें और स्कीमा के साथ मान्य करें। सभी बहुत, बहुत उपयोगी हैं।


5
मिश्रित-सामग्री को छोड़कर जहां डेटा में टैग होते हैं। JSON ऐसा बिल्कुल नहीं करता है।
एस.लूट।

11

XSLT का उपयोग करके बहुत अधिक कार्यक्षमता है जो JSON के साथ संभव नहीं हो सकता है। इसलिए, यदि वे कार्यात्मक रूप से समतुल्य नहीं हैं तो वे एक दूसरे को प्रतिस्थापित नहीं कर सकते हैं।


3
उस ने कहा, आप JSON को डिस्क्रिअलाइज़ करने, हेरफेर करने और सीरियल करने के लिए दूसरी भाषा का उपयोग कर सकते हैं, और XSLT XML नहीं है, इसलिए यह बिंदु वास्तव में लूट है।
स्टुपरयूजर

3
XSLT है एक्सएमएल - स्कीमा को देखने के लिए यहाँ
treecoder

धन्यवाद @greengit, मेरे पास केवल इसका संक्षिप्त विवरण है, उत्तर को अद्यतन किया।
स्टॉपरयूज़र

2
@StuperUser: JSON के साथ यह "असंभव" कैसे हो सकता है ? यह सिर्फ एक परिवर्तन है, शायद उपकरण अभी तक गायब हैं। या समस्या JSON में विशेषताओं की कमी से संबंधित है?
मआर्टिनस

1
@StuperUser: XSLT एक भाषा (XML का सबसेट) है, जिसके लिए कुछ दुभाषियों को कम से कम एक अन्य भाषा (शायद C, जावा, ...) में लिखा गया था। वही JSON के लिए किया जा सकता है (कुछ JSON-T को परिभाषित करें, इंट्रिप्टर लिखें), क्या यह नहीं हो सकता है?
maaartinus

8

तथ्य यह है कि, हम लंबे समय तक दोनों के साथ रहने वाले हैं, और JSON बिगोट होने के नाते "हानिकारक माना जाता है।"


7

JSON काफी नया है और विरासत प्रणाली इसका समर्थन नहीं करेगी। विरासत प्रणालियों को अपग्रेड करना समीचीन है और बग का परिचय देता है। JSON निकट भविष्य में किसी भी समय XML को प्रतिस्थापित नहीं करेगा।


2
आपके जवाब के लिए धन्यवाद। कार्यान्वयन की रणनीति के बजाय मेरे पास जो कुछ भी है, वह एक तकनीकी समीक्षा है। मैं सिर्फ उदाहरण के लिए जानना चाहता हूं, उन विरासत प्रणालियों के नए संस्करणों के लिए, क्या हम XML को पूरी तरह से छोड़ सकते हैं और JSON का उपयोग कर सकते हैं? यदि नहीं, तो हम JSON में क्या याद करते हैं?
सईद निमाती

दूसरी ओर, मैंने पिछले कुछ वर्षों में किसी भी XML, सिर्फ JSON का उपयोग नहीं किया है। और अच्छी रिद्धि। बेशक XML अधिक उद्यमी है। जो नौकरी की सुरक्षा के लिए बहुत अच्छा है, दक्षता के लिए बहुत अच्छा नहीं है।
gnasher729

6

मैं कहूंगा कि cwallenpoole एक उत्कृष्ट बिंदु बनाता है। जबकि अधिकांश XML को JSON में अनुवादित किया जा सकता है, चाहे ऐसा करना इसके लिए बेहतर हो, एक अलग बिंदु है।

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

जबकि HTML 5 का अपना पार्सर हो सकता है, जो अभी भी DocBook जैसे एप्लिकेशन को छोड़ता है।


JSON में स्पष्ट रूप से स्ट्रिंग्स हो सकते हैं जिनमें HTML हो सकता है।
gnasher729

6

यह डोमेन पर निर्भर करता है। वेब सेवाओं के संदर्भ में? पूर्ण रूप से। यह पूरी तरह से शर्मनाक है कि विक्रेता अभी भी अपने ग्राहकों पर SOAP जोर दे रहे हैं। REST + JSON सभी तरह से।

अब, जब आप डॉकबुक या अन्य कार्यान्वयन जैसी शैली की जानकारी के साथ जटिल, संरचित डेटा के बारे में बात कर रहे हैं? यह XML के लिए एक उचित डोमेन है।


4

अपने आप को JSON में सीमित क्यों करें जब YAML एक सुपर सेट और बहुत अधिक अभिव्यंजक है और इसलिए XML या JSON से शक्तिशाली है।

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


3

जब आप JSON में इन दो ऑब्जेक्ट को मॉडल करने का प्रयास करते हैं तो यह बदसूरत हो जाता है:

<customer><name>John Doe</name></customer>
<employee><name>John Doe</name</employee>

JSON का उपयोग करते हुए, इसका उपयोग 99% मामलों में किया जाता है, जिसके साथ कोई भी खो जाता है:

{ name: "John Doe" } 

और अब आपको कुछ मेटा-स्ट्रक्चर्स को जोड़ना होगा और JSON की सारी सुंदरता समाप्त हो गई है, जबकि आपको डाउनसाइड्स के साथ छोड़ दिया गया है।


11
आपके द्वारा प्रदान किए गए XML के बराबर JSON है { customer: { name: 'John Doe' }, employee : { name: 'John Doe' } }। इसलिए तकनीकी रूप से, आपका उत्तर सही नहीं है। :)
सईद नेमाटी

निश्चित रूप से, JSON में केवल एक चीज की कमी है, और मॉडलिंग ऑब्जेक्ट्स (मार्कअप के विपरीत) के लिए बेकार हैं । कभी-कभी विशेषताओं का उपयोग शॉर्टकट के रूप में किया जाता है जो नेस्टेड डेटा (उदाहरण के लिए, हाइबरनेट कॉन्फ़िगरेशन फ़ाइलों में) का उपयोग करके व्यक्त किया जा सकता है, जो कि आसान है लेकिन वास्तव में पसंद का अस्तित्व इसे कठिन बना देता है। कॉन्फिग फाइल और मॉडलिंग ऑब्जेक्ट दो जगहें हैं जहाँ JSON स्पष्ट रूप से बेहतर है।
माॅर्टिनस

2
@SaeedNeamati, तो आप <customer><name>John Doe</name></customer><customer><name>John Doe</name></customer>JSON में कैसे मॉडल बनाएंगे ?
svick

6
{ग्राहक: [{नाम: Do जॉन डो ’}, {नाम: e जॉन डो’}]}?
स्क्रैप्टप

2
@Stijn - सही है, और यह काम करता है, लेकिन यह मूल उत्तर से टिप्पणी की पुष्टि करता है, कि "आपको कुछ मेटा-संरचनाओं को जोड़ना है" कुछ चीजों को मॉडल करने के लिए जो XML में स्वाभाविक रूप से अधिक गिरते हैं।
मैट आर

3

मुझे नहीं पता कि JSON के लिए ऐसी कोई सुविधा मौजूद है, लेकिन .NET में कम से कम आप किसी दिए गए स्कीमा के खिलाफ XML को मान्य कर सकते हैं। मेरी नजर में XML का यह एक मूल्यवान लाभ है।


2
json के पास स्कीमा भी है: json-schema.org
lordvlad
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.