खोज…


टिप्पणियों

JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) डगलस क्रॉकफोर्ड द्वारा मूल रूप से निर्दिष्ट सबसे लोकप्रिय और व्यापक रूप से स्वीकार किए गए डेटा विनिमय प्रारूप में से एक है।

वर्तमान में यह दो प्रतिस्पर्धी मानकों, RFC 71592 और ECMA-404 द्वारा वर्णित है। ईसीएमए मानक न्यूनतम है, केवल व्याकरण के सिंटैक्स का वर्णन करता है, जबकि आरएफसी कुछ अर्थ और सुरक्षा विचार भी प्रदान करता है।

  • JSON क्लाइंट और सर्वर के बीच डेटा के आदान-प्रदान के लिए क्लाइंट-सर्वर आर्किटेक्चर को शामिल करने वाले सॉफ्टवेयर्स में व्यापक रूप से स्वीकार किया जाता है।
  • JSON का उपयोग करना आसान है और विशुद्ध रूप से टेक्स्ट-आधारित, हल्के और मानव पठनीय प्रारूप और लोग अक्सर XML के प्रतिस्थापन के रूप में गलत समझ लेते हैं।
  • हालाँकि संक्षिप्त नाम जावास्क्रिप्ट के साथ शुरू होता है, JSON एक भाषा नहीं है या कोई भी भाषा शाब्दिक है, यह डेटा के अंकन के लिए सिर्फ एक विनिर्देश है।
  • यह प्लेटफ़ॉर्म और भाषा स्वतंत्र और इनबिल्ट है, जो लगभग सभी सामने की भाषाओं / चौखटों द्वारा समर्थित है, जैसे JSON डेटा प्रारूप के लिए समर्थन और समर्थन सभी लोकप्रिय भाषाओं में उपलब्ध है, जिनमें से कुछ C #, PHP, Java, C ++, पायथन, रूबी हैं। और बहुत सारे।
  • JSON के लिए आधिकारिक इंटरनेट मीडिया प्रकार अनुप्रयोग / json है।
  • JSON फ़ाइल नाम एक्सटेंशन .json है।

संस्करण

चूंकि JSON को कोई अपडेट नहीं मिला है, JSON का केवल 1 संस्करण है, मूल RFC दस्तावेज़ में रीडायरेक्ट के नीचे लिंक है, जो कि RFC 4627 है।

संस्करण रिलीज़ की तारीख
मूल 2006/07/28

JSON सिंटैक्स नियम

JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) सिंटैक्स जावास्क्रिप्ट के एक सबसेट पर आधारित है (यह भी देखें json.org )।

एक मान्य JSON अभिव्यक्ति निम्नलिखित डेटा प्रकारों में से एक हो सकती है

  • सरल डेटा प्रकार: स्ट्रिंग, संख्या, बूलियन, अशक्त
  • मिश्रित डेटा प्रकार: मूल्य, वस्तु, सरणी

सरल डेटा प्रकार

JSON स्ट्रिंग को दोहरे उद्धरण चिह्नों में संलग्न किया जाना है और इसमें शून्य या अधिक यूनिकोड वर्ण हो सकते हैं; बैकस्लैश एस्केप की अनुमति है। स्वीकृत JSON नंबर E संकेतन में हैं । बुलियन true , false । Null आरक्षित कीवर्ड null

डाटा प्रकार वैध JSON के उदाहरण
### स्ट्रिंग "apple"
"苹果"
"\u00c4pfel\n"
""
### नंबर 3
1.4
-1.5e3
### बुलियन true
false
### शून्य null

समग्र डेटा प्रकार

मूल्य

एक JSON मान निम्न में से एक हो सकता है: स्ट्रिंग, संख्या, बूलियन, अशक्त, वस्तु, सरणी।

वस्तु

एक JSON ऑब्जेक्ट एक अल्पविराम से अलग किया गया नाम का संग्रह है: घुंघराले कोष्ठक में संलग्न मूल्य जोड़े जहां नाम स्ट्रिंग है और JSON मान को महत्व देता है।

सरणी

एक JSON सरणी JSON मानों का एक संग्रह है।

JSON सरणी का उदाहरण:

["home", "wooden"]

JSON ऑब्जेक्ट्स के उदाहरण:

{
    "id": 1,
    "name": "A wooden door",
    "price": 12.50,
    "tags": ["home", "wooden"]
}

[
  1,
  2,
  [3, 4, 5, 6],
  {
    "id": 1,
    "name": "A wooden door",
    "price": 12.50,
    "tags": ["home", "wooden"]
  }
]

JSON डेटा को मान्य और स्वरूपित करने के लिए ऑनलाइन उपकरण:

JSON ऑब्जेक्ट

एक JSON ऑब्जेक्ट घुंघराले ब्रेसिज़ से घिरा हुआ है और इसमें कुंजी-मूल्य जोड़े हैं।

{ "key1": "value1", "key2": "value2", ... }

कुंजी को मान्य तार होना चाहिए, इस प्रकार दोहरे उद्धरण चिह्नों से घिरा होगा। मान JSON ऑब्जेक्ट्स, संख्याएँ, स्ट्रिंग्स, सरणियाँ, या निम्न 'शाब्दिक नामों' में से एक हो सकते हैं: false , null या true । एक कुंजी-मूल्य जोड़ी में, कुंजी एक बृहदान्त्र द्वारा मूल्य से अलग हो जाती है। बहु-कुंजी-मूल्य-जोड़े कॉमा द्वारा अलग किए जाते हैं।

वस्तुओं में आदेश महत्वपूर्ण नहीं है। निम्न JSON वस्तु इस प्रकार ऊपर के बराबर है:

{ "key2": "value2", "key1": "value1", ... }

यह सब योग करने के लिए, यह एक वैध JSON ऑब्जेक्ट का एक उदाहरण है:

{
  "image": {
    "width":  800,
    "height": 600,
    "title":  "View from 15th Floor",
    "thumbnail": {
      "url": "http://www.example.com/image/481989943",
      "height": 125,
      "width":  100
    },
    "visible": true,
    "ids": [116, 943, 234, 38793]
  }
}

संबंधित (जावा) ऑब्जेक्ट समकक्षों के साथ JSON ऑब्जेक्ट्स के सामान्य उदाहरण

इस पूरे उदाहरण में यह माना जाता है कि JSON को क्रमबद्ध किया जा रहा 'मूल' ऑब्जेक्ट निम्न वर्ग का एक उदाहरण है:

public class MyJson {
}

उदाहरण 1: MyJson उदाहरण का एक उदाहरण, जैसा है:

{}

अर्थात चूंकि वर्ग में कोई फ़ील्ड नहीं है, केवल घुंघराले ब्रैकेट्स को क्रमबद्ध किया गया है। घुंघराले कोष्ठक एक वस्तु का प्रतिनिधित्व करने के लिए सामान्य सीमांकक हैं । यह भी ध्यान दें कि रूट-वैल्यू को किस-वैल्यू पेयर के रूप में क्रमबद्ध नहीं किया गया है। यह सरल प्रकारों (स्ट्रिंग, संख्याओं, सरणियों) के लिए भी सही है जब वे एक (बाहरी) वस्तु के क्षेत्र नहीं होते हैं।

उदाहरण 2: आइए MyJson कुछ फ़ील्ड जोड़ें, और उन्हें कुछ मानों के साथ आरंभ करें:

// another class, useful to show how objects are serialized when inside other objects
public class MyOtherJson {} 

// an enriched version of our test class
public class MyJson {
  String myString = "my string";
  int myInt = 5;
  double[] myArrayOfDoubles = new double[] { 3.14, 2.72 };
  MyOtherJson objectInObject = new MyOtherJson();    
}

यह संबंधित JSON प्रतिनिधित्व है:

{
  "myString" : "my string",
  "myInt" : 5,
  "myArrayOfDoubles" : [ 3.14, 2.72 ],
  "objectInObject" : {}
}

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

JSON ऐरे

एक JSON एरे मूल्यों का एक संग्रह है। यह चौकोर ब्रेसिज़ यानी [] से घिरा हुआ है, और मान अल्पविराम-सीमांकित हैं:

{ "colors" : [ "red", "green", "blue" ] }

JSON Arrays में ऑब्जेक्ट सहित कोई मान्य JSON तत्व भी हो सकता है, जैसा कि 2 ऑब्जेक्ट्स (RFC दस्तावेज़ से लिया गया) के साथ सरणी के इस उदाहरण में है:

[
  {
     "precision": "zip",
     "Latitude":  37.7668,
     "Longitude": -122.3959,
     "Address":   "",
     "City":      "SAN FRANCISCO",
     "State":     "CA",
     "Zip":       "94107",
     "Country":   "US"
  },
  {
     "precision": "zip",
     "Latitude":  37.371991,
     "Longitude": -122.026020,
     "Address":   "",
     "City":      "SUNNYVALE",
     "State":     "CA",
     "Zip":       "94085",
     "Country":   "US"
  }
]

उनमें मिश्रित प्रकार के तत्व भी हो सकते हैं, उदाहरण के लिए:

[
    "red",
    51,
    true,
    null,
    {
        "state": "complete"
    }
]

JSON सरणियों (और ऑब्जेक्ट्स) को लिखते समय एक आम गलती अंतिम तत्व के बाद पीछे चल रहा अल्पविराम छोड़ना है। यह कई भाषाओं में सामान्य पैटर्न है, लेकिन दुर्भाग्य से JSON में मान्य नहीं है। उदाहरण के लिए, निम्न सरणी अमान्य है:

[
    1,
    2,
]

इसे वैध बनाने के लिए, आपको अंतिम तत्व के बाद अल्पविराम को हटाने की आवश्यकता होगी, इसे इसमें बदलकर:

[
    1,
    2
]

संपादन JSON हाथ से

JSON एक बहुत ही सख्त प्रारूप है ( http://json.org देखें ) । इससे मशीनों के लिए पार्स करना और लिखना आसान हो जाता है लेकिन मनुष्य को आश्चर्य होता है जब एक असंगत गलतियों से दस्तावेज़ टूट जाता है।

सामान्य समस्यायें

ट्रेलिंग कोमा

अधिकांश प्रोग्रामिंग भाषाओं के विपरीत, आपको अनुगामी अल्पविराम जोड़ने की अनुमति नहीं है:

{
  a: 1,
  b: 2,
  c: 3
}

3 बाद अल्पविराम जोड़ना एक सिनाक्स त्रुटि पैदा करेगा।

सरणियों के लिए एक ही समस्या मौजूद है:

[ 
  1,
  2
]

यदि आपको वस्तुओं को फिर से व्यवस्थित करने की आवश्यकता है तो आपको अतिरिक्त ध्यान रखना चाहिए।

गुमशुदा कोमा

{
  a: 1,
  b: 2,
  c: 3
  d: 4
}

चूंकि ट्रेलिंग कॉमा की अनुमति नहीं है, इसलिए नए मूल्य को जोड़ने से पहले एक को जोड़ना भूल जाना आसान है (इस मामले में 3 बाद)।

टिप्पणियाँ

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

कई वर्कअराउंड हैं:

  • C शैली टिप्पणियों का उपयोग करें, फिर उन्हें पार्सर में पास करने से पहले पट्टी करें
  • डेटा में टिप्पणी एम्बेड करें
{
  "//": "comment",
  "data": 1
}
  • टिप्पणियाँ एम्बेड करें और उन्हें डेटा के साथ अधिलेखित करें
{
  "data": "comment",
  "data": 1
}

दूसरी data प्रविष्टि अधिकांश पार्सर्स में टिप्पणी को अधिलेखित कर देगी।

समाधान

JSON लिखना आसान बनाने के लिए एक IDE का उपयोग करें जो सिंटैक्स त्रुटियों की जाँच करता है और सिंटैक्स रंग प्रदान करता है। अधिकांश संपादकों के लिए प्लगइन्स उपलब्ध हैं।

जब आप एप्लिकेशन और टूल विकसित करते हैं, JSON का आंतरिक रूप से और प्रोटोकॉल के रूप में उपयोग करते हैं, लेकिन इसे उन जगहों पर उजागर न करने का प्रयास करें जहां मानव को हाथ से इसे संपादित करने की आवश्यकता होगी (डीबगिंग को छोड़कर)।

अन्य स्वरूपों का मूल्यांकन करें जो इस उपयोग के लिए बेहतर अनुकूल हैं, जैसे:

  • Hjson , JSON से मूल रूप से परिवर्तित किया जा सकता है
  • TOML , INI फ़ाइलों के समान
  • YAML , अधिक सुविधाएँ लेकिन अतिरिक्त जटिलता की कीमत पर

सरणी बनाम वस्तु के लिए तर्क (यानी जब उपयोग करने के लिए)

JSON सरणियाँ वस्तुओं के संग्रह का प्रतिनिधित्व करती हैं। जेएस में, संग्रह के एक समूह को बंद कर देता है, जैसे कि slice , pop , push । वस्तुओं में बस अधिक कच्चा डेटा होता है।

एक JSONArray मूल्यों का एक क्रमबद्ध क्रम है। इसका बाहरी पाठ रूप वर्गाकार कोष्ठकों में लिपटा हुआ एक स्ट्रिंग है जिसमें मानों को अलग किया जाता है।

एक JSONObject नाम / मान युग्म के एक अव्यवस्थित संग्रह है। इसका बाहरी रूप एक स्ट्रिंग है जो नामों और मूल्यों के बीच कॉलन के साथ घुंघराले ब्रेसिज़ में लिपटा होता है, और मान और नामों के बीच कॉमा होता है।

वस्तु - कुंजी और मूल्य, एरे - अंक, तार, बूलियन। आप इस या उस का उपयोग कब करते हैं?

आप Arrays के बारे में सोच सकते हैं जैसे कि "एक है" और वस्तुओं के रूप में "एक" है। उदाहरण के लिए "फल" का उपयोग करें। फ्रूट एरे में हर आइटम एक प्रकार का फल है।

array fruit : [orange, mango, banana]

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

array fruit : [orange:[], mango:{}, banana:{}]

। आप देख सकते हैं कि नारंगी एक सरणी भी है। इसका तात्पर्य है कि कोई भी वस्तु जो नारंगी जाती है वह नारंगी का एक प्रकार है, कहते हैं: कड़वा_ओरेंज, मैंडरिन, मीठा_ओरेंज।

फल वस्तु के लिए, इसमें कोई भी वस्तु फल का एक गुण है। इस प्रकार फल एक है

object fruit :{seed:{}, endocarp:{},flesh:{}}

इसका तात्पर्य यह भी है कि बीज वस्तु के भीतर कुछ भी बीज का गुण होना चाहिए, कहते हैं: रंग, ।।

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

सभी पार्टिसिपेंट्स को क्रेडिट JSON सरणियों बनाम JSON ऑब्जेक्ट्स का उपयोग करने के बीच अंतर क्या हैं?



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow