2014-10-17 13 views
5

मैं एक पृष्ठ जहाँ मैं JSON.parseJSON.parse न्यू लाइन पात्रों

'[{"Name":"Eggs","Complete":false,"Notes":"Notes here\n"},{"Name":"Sugar","Complete":false,"Notes":null}]' 

का उपयोग कर json स्ट्रिंग निम्नलिखित पार्स करने के लिए कोशिश कर रहा हूँ है लेकिन निम्नलिखित कोड त्रुटि "Uncaught SyntaxError: Unexpected token"

var groceriesJson = JSON.parse(jsonString); 

तो मैं के लिए आया था देता बचने पता है कि इसकी वजह से \n जेसन स्ट्रिंग में है। तो मैंने this solution को आजमाया। लेकिन कोई भाग्य नहीं है। अभी भी एक ही त्रुटि "Uncaught SyntaxError: Unexpected token"

function escapeSpecialChars(jsonString) { 

     return jsonString.replace(/\\n/g, "\\n") 
       .replace(/\\'/g, "\\'") 
       .replace(/\\"/g, '\\"') 
       .replace(/\\&/g, "\\&") 
       .replace(/\\r/g, "\\r") 
       .replace(/\\t/g, "\\t") 
       .replace(/\\b/g, "\\b") 
       .replace(/\\f/g, "\\f"); 

     } 

var groceriesJson = JSON.parse(escapeSpecialChars(jsonString)); 

कोई विचार? धन्यवाद

--- अद्यतन ----

मैं इस स्ट्रिंग मैन्युअल बनाने नहीं कर रहा हूँ, मैं सी # कोड है कि सी # से json स्ट्रिंग बनाता है

var jss = new System.Web.Script.Serialization.JavaScriptSerializer(); 
var groceries = jss.Serialize(Model); 

जावास्क्रिप्ट कोड में वस्तुओं तो मैं

var jsonString = '@Html.Raw(groceries)' 
var groceriesJson = JSON.parse(escapeSpecialChars(jsonString)); 
+3

आप जेएसओएन को अपनी जावास्क्रिप्ट में स्ट्रिंग अक्षर के रूप में एम्बेड करने का प्रयास क्यों कर रहे हैं? बस इसे एक सरणी के रूप में प्रयोग करें और मैन्युअल पार्सिंग चरण को छोड़ दें। – Quentin

+0

यह काम करता है। अगर आप उत्तर पोस्ट कर सकते हैं तो मैं इसे उत्तर के रूप में चिह्नित करूंगा। धन्यवाद – sanjeev

उत्तर

3

तुम बस \\n के रूप में, आपके JSON बनने \ बच चाहिए:

'[{"Name":"Eggs","Complete":false,"Notes":"Notes here\\n"},{"Name":"Sugar","Complete":false,"Notes":null}]'; 

आप JSON के लिए पहुँच नहीं कर सकते, तो अपने कार्य किया जाना चाहिए:

function escapeSpecialChars(jsonString) { 

    return jsonString.replace(/\n/g, "\\n") 
     .replace(/\r/g, "\\r") 
     .replace(/\t/g, "\\t") 
     .replace(/\f/g, "\\f"); 

} 

var groceriesJson = JSON.parse(escapeSpecialChars(jsonString)); 
+0

मैं मैन्युअल रूप से जेसन स्ट्रिंग नहीं बना रहा हूं। मैंने अपना प्रश्न अपडेट किया। – sanjeev

0

@Quentin से पता चलता है आप शाब्दिक अंदर मूल्य भंडारण को छोड़ सकते हैं और केवल कुछ इस तरह करते हैं:

var jsonObject = @Html.Raw(groceries); 
संबंधित मुद्दे