2012-05-16 21 views
11

कहते हैं के साथ मैंएन्कोडिंग Apostrophe JSON.NET

public class MyTestClass 
{ 
    public MyTestClass() 
    { 
     Testing = "check ' out"; 
    } 
    public string Testing { get; set; } 
} 

और तरह JavascriptSerializer/JsonNet serializers की तरह एक वर्ग है: फिर एक दृश्य में

public IHtmlString ToJsonNet(object value) 
{ 
    return new MvcHtmlString(JsonConvert.SerializeObject(value)); 
} 

public IHtmlString ToJson(object value) 
{ 
    var json = new JavaScriptSerializer(); 
    return new MvcHtmlString(json.Serialize(value)); 
} 

मैं

@(Serializers.ToJsonNet(new MyTestClass())) 
@(Serializers.ToJson(new MyTestClass())) 

JsonNet {"परीक्षण" वापस लौटाएगा: "चेक आउट"}, जबकि जावास्क्रिप्टसेरियलाइज़र {"परीक्षण" वापस लौटाएगा: "चेक \ u0027"}। मैं की तरह

var model = $.parseJSON('@jsonString'); 

एक जावास्क्रिप्ट वस्तु बनाने के लिए चाहते हैं लेकिन यह तभी काम करता है apostrophe एन्कोड किया गया है। अन्यथा, apostrophe मेरी javacript तरह

var model = $.parseJSON('{"Testing":"check ' out"}'); 

जो विफल रहता है क्योंकि डाला apostrophe parseJSON मेरी स्ट्रिंग बहुत जल्दी भागने बनाता है देखने के लिए बनाता है।

जावास्क्रिप्टसेरियलाइज़र डिफ़ॉल्ट रूप से apostrophe को \ u0027 एन्कोड करता है जबकि JSON.NET (जिसे मैं उपयोग करना चाहता हूं) नहीं करता है। ऐसा करने के लिए मैं JSON.NET कैसे बदल सकता हूं? क्या कोई सेटिंग है जो मुझे याद आ रही है? क्या कोई अलग तरीका है कि मैं अपने JSON स्ट्रिंग को जावास्क्रिप्ट में पार्स कर सकता हूं जहां एस्ट्रोफ़े ठीक है?

+0

jQuery का कौन सा संस्करण उपयोग कर रहे हैं? – nemesv

+0

@nemesv संस्करण 1.7.1 – user1399487

+1

क्या आप JSON.NET के साथ इस समस्या को हल करने में सक्षम थे? – CoffeeCode

उत्तर

1

निम्नलिखित उत्तर इंगित करता है कि दोनों बराबर होना चाहिए। https://stackoverflow.com/a/5022386/1388165

यदि यह पार्सजॉन कॉल विफल हो रहा है, तो शायद तर्क में सिंगल कोट्स के बजाय डबल कोट्स मदद करेंगे।

+0

क्योंकि जेसनस्ट्रिंग में डबल कोट्स और सिंगल कोट्स दोनों शामिल हैं, क्योंकि उनमें से किसी एक का उपयोग करते हुए वर्तमान में विफलता का कारण बनता है क्योंकि यह जल्दी ही जेसनस्ट्रिंग से बच निकलता है। – user1399487

1

क्या आपने एस्ट्रोफ़े से "\" से बचने की कोशिश की है?

Testing = "check \' out"; तरह


तुम भी this पोस्ट पर एक नज़र रखना चाहिए, वहाँ आप के लिए कुछ दिलचस्प जवाब यहां होने लगते हैं।

1

इस प्रयास करें:

{"Testing":"check \u0027 out"} 
+0

जब मैं माइक्रोसॉफ़्ट वर्ड से एचटीएमएल टेक्स्ट एरिया में टेक्स्ट पेस्ट करता हूं और फिर उस मान का उपयोग सी # में क्रमबद्ध करने के लिए करता हूं, तो एस्ट्रोफ़े को \ u0027 के रूप में क्रमबद्ध नहीं किया जाता है बल्कि इसके बजाय यह चरित्र "" के रूप में रहता है। कोई विचार? – nav