2012-11-24 58 views
7

如何使用JSON.NET將'編碼爲\u0027如何在JSON.NET中對單引號/撇號進行編碼

使JSON字符串會是這個樣子:

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

爲什麼你需要用這種方式編碼撇號? 「{」Id「:8,」CompanyName「:」Jane's bakery「}'是有效的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

是否可以使用單引號進行編碼?像這樣'{'Id':8,'CompanyName':'Jane \ u0027s bakery'}'? – Serge

2

我以爲我有同樣的要求,但@ nick_w的評論使我意識到,我並不需要在所有的逃避單引號。

如果你生成json作爲服務器端代碼中的字符串,然後輸出到客戶端的JavaScript,所以它可以轉換爲JavaScript對象,然後轉義是不需要的。

使用需要逃逸單引號額外的步驟

(採用asp風格語法中的代碼)...

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

使用JSON,因爲它是...

var myData = <%=myServerGeneratedString %>; 

的Javascript將解釋不引號的字符串,如

[{「name」:「Bill」},{「name」:「Ted」}]

as javascript objects。

因爲在處理服務器端和客戶端字符串時很容易混淆,所以此提醒可能對某人有用。它可能會或可能不適用於OP - 我確信有很多情況下單引號真正需要轉義。

+0

感謝您的提示。但是,如果'myServerGeneratedString'爲空,並且您放棄了單配額,則會出現無法處理的JavaScript語法錯誤。如果保留單配額並且'myServerGeneratedString'爲空,則不會有比可以檢查的空字符串更多的損害。這就是爲什麼我保持他們,即使它不知何故是醜陋的。 –