2014-10-17 13 views
5

ben JSON.parse satır karakterlerini

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

kullanarak json dizeye şu ayrıştırmak çalışıyorum bir sayfa varsa Ama şu kod

var groceriesJson = JSON.parse(jsonString); 

"Uncaught SyntaxError: Unexpected token" Sonra geldi hatayı verir kaçış JSON.parse json dizesinde \n yüzünden olduğunu biliyorum. Ben de this solution'u denedim. Ama şans yok. Hala aynı hata "Uncaught SyntaxError: Unexpected token"

Herhangi bir fikir? Teşekkür

--- GÜNCELLEME ---- el bu dize oluşturma değilim

, C# dan json dize oluşturur C# kodları var JavaScript kodları ardından

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

nesneleri Ben

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

JSON'u JavaScript'inize bir dize değişmezi olarak yerleştirmeye neden çalışıyorsunuz? Sadece bir dizi değişmezi olarak kullanın ve manuel ayrıştırma adımını atlayın. – Quentin

+0

Bu işe yarıyor. Cevabını gönderirseniz yanıt olarak işaretlerim. Teşekkürler – sanjeev

cevap

3

sadece, JSON olma \\n gibi \ kaçmak gerekir vardır: Eğer JSON erişimi yapamıyorsanız

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

, sonra işlevi olmalıdır:

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

Elle json dizesi oluşturmuyorum. Sorumu güncelledim. – sanjeev

0

@Quentin değişmeziyle içindeki değerini depolamak atlayıp böyle bir şey yapabiliriz anlaşılacağı gibi:

var jsonObject = @Html.Raw(groceries);