2011-12-05 9 views
7

कुछ मुझे परेशान कर रहा है। मैंने अपने कुछ ऐप्स/वेबसाइटों में JSON का उपयोग किया है, हम सभी इसे प्यार करते हैं! हालांकि कुछ मेरे सिर में प्रवेश किया जो आज मैंने कभी नहीं सोचा गया है के बारे में .. (इस http://json.org/example.html से लिया जाता है) निम्न उदाहरण पर एक नज़र डालें:JSON संरचना को समझना - विशेषताएँ और मान

{"widget": { 
    "debug": "on", 
    "window": { 
     "title": "Sample Konfabulator Widget", 
     "name": "main_window", 
     "width": 500, 
     "height": 500 
    }, 
    "image": { 
     "src": "Images/Sun.png", 
     "name": "sun1", 
     "hOffset": 250, 
     "vOffset": 250, 
     "alignment": "center" 
    }, 
    "text": { 
     "data": "Click Here", 
     "size": 36, 
     "style": "bold", 
     "name": "text1", 
     "hOffset": 250, 
     "vOffset": 100, 
     "alignment": "center", 
     "onMouseUp": "sun1.opacity = (sun1.opacity/100) * 90;" 
    } 
}} 
अब

अगर यह XML के रूप में व्यक्त की गई थी: हम निम्नलिखित होंगे :

<widget> 
    <debug>on</debug> 
    <window title="Sample Konfabulator Widget"> 
     <name>main_window</name> 
     <width>500</width> 
     <height>500</height> 
    </window> 
    <image src="Images/Sun.png" name="sun1"> 
     <hOffset>250</hOffset> 
     <vOffset>250</vOffset> 
     <alignment>center</alignment> 
    </image> 
    <text data="Click Here" size="36" style="bold"> 
     <name>text1</name> 
     <hOffset>250</hOffset> 
     <vOffset>100</vOffset> 
     <alignment>center</alignment> 
     <onMouseUp> 
      sun1.opacity = (sun1.opacity/100) * 90; 
     </onMouseUp> 
    </text> 
</widget> 

जब एक्सएमएल परिवर्तन करने के लिए JSON को देखकर अगर वहाँ किसी भी तरह से है कि आप अगर एक जोड़ी ("कुंजी": "मान") को अलग कर सकते है मैं सोच रहा हूँ एक टैग का एक विशेषता है। उदाहरण के लिए, ऊपर

"window": { 
      "title": "Sample Konfabulator Widget", 
      "name": "main_window", 

शीर्षक हमारे JSON में खिड़की टैग की विशेषता के रूप जबकि नाम यह अपने आप में एक टैग है प्रतिनिधित्व किया है, लेकिन इस कहीं भी व्यक्त नहीं है (है कि मैं देख सकते हैं)।

<window title="Sample Konfabulator Widget"> 
    <name>main_window</name> 

क्यों नहीं प्रदर्शित किया जाता है के रूप में:

<window> 
    <title>Sample Konfabulator Widget</title> 
    <name>main_window</name> 

उनके एक तरह से करता है, तो एक जोड़ी पैरेंट टैग या अपने आप में एक बच्चे के टैग की एक विशेषता हैं मैं निर्दिष्ट कर सकते हैं है? क्षमा करें अगर मेरा शब्द खराब है या मैं खुद को अच्छी तरह से समझा नहीं रहा हूं।

+1

क्या आपके पास कोई XML स्कीमा या कुछ है? न तो एक्सएमएल और न ही JSON आपके डेटा को कोई अर्थपूर्ण अर्थ असाइन करता है। –

+3

एक्सएमएल-टू-जेसन ट्रांसफार्मर में मैंने देखा कि सबसे आम सम्मेलन जेसन में @ के साथ शुरू होने वाले गुण प्राप्त करना है। उदाहरण: '{" विंडो ": {" @title ": ...' – Mic

+0

@Mic - यह करने का यह एक अच्छा तरीका है। मैंने इसे पहले कभी नहीं देखा है, आपकी एक वाक्य स्पष्टीकरण यह स्पष्ट करता है कि यह कैसे काम करेगा। – nnnnnn

उत्तर

1

कुछ कनवर्टर्स कुछ शीर्षक जैसे 'शीर्षक' और 'src' का उपयोग कर रहे हैं जिन्हें फ़ील्ड के बजाय एक विशेषता के रूप में tranformed किया जा रहा है। कुछ कनवर्टर्स नहीं करते हैं।

+0

लोगों को पढ़ने के लिए खुशी हुई है अभी भी सोच रहे हैं ... _I think_ आपके विचार के लिए किसी प्रकार का संदर्भ महान होगा , इसलिए मुझे पता चलेगा कि कोई उपकरण यह करता है (= किस विनिर्देश के आधार पर) – Philzen

1

JSON के भीतर नहीं। मुझे लगता है कि आपने JSON से XML में कनवर्ट करने के लिए किसी प्रकार का स्वचालित तरीका उपयोग किया है; उस कार्यक्रम के आधार पर जो परिवर्तन कर रहा है वहां ऐसी टिप्पणियां हो सकती हैं जिनका आप उपयोग कर सकते हैं। उदाहरण भी देखें। http://en.wikipedia.org/wiki/JSON जो एक ही JSON के लिए दो एक्सएमएल उदाहरण देता है।

कोई औपचारिक विनिर्देश नहीं है (जो मुझे पता है) कि आप JSON को XML पर मैप करने के लिए "अनुमानित" कैसे हैं। दोनों डेटा का प्रतिनिधित्व करने के लिए औपचारिक, संरचित तरीके हैं, लेकिन आप को डेटा का प्रतिनिधित्व करने के ठोस हिस्सों को छोड़ दें। तो यह निर्भर करता है कि आप डेटा का प्रतिनिधित्व कैसे करना चाहते हैं, और आपका एप्लिकेशन क्या कर सकता है या नहीं कर सकता है।

2

यह आपके कनवर्टर पर निर्भर करता है।

जेसन एक्सएमएल 1-1 से मेल नहीं खाता है।

बस शब्दों में कहें, जेसन शब्दकोष और अरणों को पारस्परिक रूप से घोंसला देने का एक तरीका है।

0

मैंने बस जेसन वेबसाइट पर यह सटीक उदाहरण पढ़ा और सोचा कि "पृथ्वी पर एक विशेषता का शीर्षक कैसे है, इसे इंगित करने के लिए कुछ भी नहीं है। मुझे लगता है कि उदाहरण स्वयं गलत नहीं है - लेकिन मुझे नहीं पता कि क्यों कोई ने एक साधारण उत्तर नहीं दिया है?

2

कुछ लोग "एट्रिब्यूट्स" नामक एक नियमित संपत्ति का उपयोग करते हैं, जो इसे "विशेषताओं कंटेनर" का विशेष अर्थ देते हैं, लेकिन उस नाम का JSON विनिर्देशों के लिए कोई विशेष अर्थ नहीं है खुद।

अपने प्रश्न का उत्तर देने के लिए, जोड़े "कुंजी": "मान" और विशेषताओं के बीच अंतर करने का कोई तरीका नहीं है, क्योंकि जेसन विशेषताओं का समर्थन नहीं करता है।

इस प्रकार का प्रश्न आम तौर पर उन लोगों से आता है जो भूल जाते हैं कि एमएम में एम "मार्कअप" है, जो सादा पाठ लेने और संरचित पाठ बनाने के लिए मार्कअप जोड़ने का एक तरीका है। मुझे लगता है कि जेएसओएन को a fat-free alternative to XML के रूप में प्रचारित करने से गलतफहमी का नाम है, जबकि वास्तव में एक्सएमएल एक मार्कअप भाषा है, और जेएसओएन एक डाटा इंटरचेंज प्रारूप है। कोई भी वास्तव में दूसरे के लिए एक विकल्प नहीं है।

मिश्रित सामग्री उन संदर्भों में से एक है जहां एक्सएमएल अपनी शक्ति दिखाता है।

<p>What a <b>mess</b> we're in.</p> 

जेएसओएन के रूप में व्यक्त करने की कोशिश कर रहा है, आपको पता चलेगा कि यह उस नौकरी के लिए डिज़ाइन नहीं किया गया था।

दूसरी तरफ, एक्सएमएल डेटा इंटरचेंजर के रूप में काफी उपयोगी हो सकता है, लेकिन ऐसा नहीं है कि यह मुख्य शक्तियों के लिए डिज़ाइन किया गया था या नहीं।

0

मुझे लगता है कि यह 'शीर्षक' और 'विवरण' (और 'डिफ़ॉल्ट') में संभाला गया है (जेएसओएन) में कीवर्ड माना जाता है। जेएसओएन वास्तव में इस तरह के गुणों को संभाल नहीं करता है। मुझे लगता है कि ऐसा करने का एकमात्र तरीका अन्य प्रविष्टियों से 'शीर्षक' को अलग करने के लिए एक और encapsulating ऑब्जेक्ट जोड़ना होगा। मुझे लगता है कि जेएसओएन के 'शीर्षक' और 'विवरण' विशेष बनाने का प्रयास इस से निपटने का एक प्रयास है। (नहीं एक अद्भुत जवाब, मुझे पता है ....)

https://spacetelescope.github.io/understanding-json-schema/reference/generic.html

0

वस्तु "शीर्षक" "विजेट/खिड़की" में एक नए तत्व में उत्पन्न हो जाएगा। यह किसी अन्य तत्व की विशेषता में कभी नहीं मिलेगा। इसके बारे में बहुत यकीन है।

+0

मुझे यकीन नहीं है कि क्या वास्तव में * उत्तर * प्रश्न है। यह एक टिप्पणी की तरह पढ़ता है जो थोड़ी सी जानकारी देता है, लेकिन बहुत कुछ नहीं। – GhostCat

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