2010-11-11 15 views
45

रिक्त स्थान, टैब और कैरिज रिटर्न जैसे रिक्त वर्ण जेसन स्ट्रिंग में अनदेखा किए गए हैं?जेएसओएन में व्हाइटस्पेस वर्ण महत्वहीन हैं?

उदाहरण के लिए, {"a":"b"}{"a" : "b"} के बराबर है?

+0

रिक्त स्थान तकनीकी रूप से रिक्त वर्ण नहीं हैं – Falmarri

+18

तकनीकी रूप से आपके दिमाग को "सफेद" के रूप में "सफेद" को पार्स किया जाना चाहिए – mk12

उत्तर

55

हां, सिंटैक्स में डबल-उद्धृत स्ट्रिंग अक्षर के बाहर रिक्त स्थान को अनदेखा किया जाता है। विशेष रूप से, RFC 4627 शो में JSON व्याकरण में ws उत्पादन:

Insignificant whitespace is allowed before or after any of the six 
structural characters. 

    ws = *(
      %x20/   ; Space 
      %x09/   ; Horizontal tab 
      %x0A/   ; Line feed or New line 
      %x0D    ; Carriage return 
     ) 
+0

धन्यवाद। मैंने आरएफसी पढ़ा था लेकिन यह अनिश्चित था कि किस तरह की व्याकरण की भाषा भाषा थी - विशेष रूप से, क्या मतलब था। – nomen

+1

* = शून्य या अधिक (नियमित अभिव्यक्ति नोटेशन से) – kevinarpe

+0

संख्यात्मक मानों में एम्बेडेड रिक्त स्थान के बारे में क्या है: {"a": 12} {"a": 1 2} के बराबर है, मैं परिभाषा की व्याख्या करता हूं "महत्वहीन व्हाइटस्पेस को पहले अनुमति दी गई है या छः संरचनात्मक पात्रों में से किसी एक के बाद "यह इंगित करने के लिए कि एक संख्यात्मक या दिनांक मूल्य – aeropapa17

3

मानक JSON में, स्ट्रिंग शाब्दिक के बाहर खाली स्थान के नजरअंदाज कर दिया है, के रूप में कहा गया है।

हालांकि, चूंकि आपका प्रश्न सी # टैग किया गया है, मुझे ध्यान रखना चाहिए कि सी #/नेट में कम से कम एक अन्य मामला है जहां JSON में व्हाइटस्पेस मायने रखता है।

DataContractJsonSerializer सही उपclass deserializing समर्थन करने के लिए एक विशेष __type संपत्ति का उपयोग करता है। इस संपत्ति को किसी ऑब्जेक्ट में पहली संपत्ति होने की आवश्यकता है, और संपत्ति के नाम और { से पहले कोई सफेद जगह नहीं है। यह पिछला धागा देखें: DataContractJsonSerializer doesn't work with formatted JSON?

कम से कम, मैंने परीक्षण किया है कि नो-व्हाइटस्पेस आवश्यकता .NET 4 के रूप में सच है। शायद इसे भविष्य के संस्करण में बदल दिया जाएगा ताकि इसे JSON मानक के साथ और अधिक लाया जा सके। ?

+0

खतरे, विल रॉबिन्सन! – wprl

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