2012-11-24 23 views
7

में एकल उद्धरण/apostrophe को एन्कोड करने के लिए कैसे करें JSON.NET के साथ '\u0027 पर एन्कोड कैसे करें?JSON.NET

तो json स्ट्रिंग कुछ इस तरह दिखाई होता है कि:

{"Id":8,"CompanyName":"Jane\u0027s bakery"} 
+1

आपको इस तरह से apostrophes एन्कोड करने की आवश्यकता क्यों है? '{" आईडी ": 8," कंपनीनाम ":" जेन बेकरी "}' वैध JSON है। –

+0

JjQuery का parseJSON एस्ट्रोफ़े के कारण अपवाद के साथ विफल रहा है .. – CoffeeCode

+0

मैं देखता हूं। आपका फ्रंट-एंड कोड JSON को कैसे पकड़ता है? –

उत्तर

6

Json.NET 4.5 रिलीज 11 भागने स्ट्रिंग नियंत्रित करने के लिए एक विकल्प जोड़ा गया। विकल्पों में से एक है सभी HTML वर्णों से बचने के लिए जिसमें एकल उद्धरण शामिल हैं।

JsonWriter.StringEscapeHandling

13

नमूना कॉल

Newtonsoft.Json.JsonConvert.SerializeObject(your_object, 
    Newtonsoft.Json.Formatting.None, 
    new Newtonsoft.Json.JsonSerializerSettings 
    { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml }) 
+0

क्या एकल कोट के साथ एन्कोड करना संभव है? इस '{' आईडी ': 8,' कंपनीनाम 'की तरह:' जेन \ u0027s बेकरी '} '? – Serge

2

मैं मैं एक ही आवश्यकता थी ग्रहण किया, लेकिन @ nick_w की टिप्पणी मुझे एहसास मैं एकल उद्धरण से बचने के लिए की जरूरत नहीं था।

यदि आप सर्वर साइड कोड में स्ट्रिंग के रूप में जेसन उत्पन्न कर रहे हैं, तो इसे क्लाइंट साइड जावास्क्रिप्ट में आउटपुट कर रहे हैं, इसलिए इसे जावास्क्रिप्ट ऑब्जेक्ट्स में परिवर्तित किया जा सकता है, फिर भागने की आवश्यकता नहीं है।

(कोड एएसपी शैली सिंटैक्स का उपयोग दिखाया गया है)

एकल उद्धरण से बचने की आवश्यकता होती है अतिरिक्त कदम का उपयोग करना ...

var myData = JSON.parse('<%=myServerGeneratedStringWithSingleQuotesEscaped %>'); 

JSON का उपयोग के रूप में यह है ...

var myData = <%=myServerGeneratedString %>; 

जावास्क्रिप्ट

जैसे एक अन्तर्निहित स्ट्रिंग की व्याख्या करेगा

[{"नाम": "बिल"}, {"नाम": "टेड"}]

जावास्क्रिप्ट ऑब्जेक्ट्स के रूप में।

सर्वर पक्ष और क्लाइंट साइड स्ट्रिंग से निपटने के दौरान मिश्रित होने के लिए इतना आसान है, यह अनुस्मारक किसी के लिए उपयोगी हो सकता है। यह ओपी पर लागू हो सकता है या नहीं भी हो सकता है - मुझे यकीन है कि ऐसे कई मामले हैं जहां सिंगल कोट्स को वास्तव में भागने की आवश्यकता है।

+0

इस संकेत के लिए धन्यवाद। लेकिन अगर 'myServerGeneratedString' खाली है और आप एकल कोटा ड्रॉप करते हैं, तो एक जावास्क्रिप्ट सिंटैक्स त्रुटि होगी जिसे आप संभाल नहीं सकते हैं। यदि आप एकल कोटा रखते हैं और 'myServerGeneratedString' खाली है, तो खाली स्ट्रिंग की तुलना में कोई और नुकसान नहीं होगा, जिसे आप चेक कर सकते हैं। यही कारण है कि मैं उन्हें भी रखता हूं यह किसी भी तरह बदसूरत है। –