2012-06-11 22 views
0

我正在使用Dojo.fromJson將json字符串轉換爲javascript對象,但拋出異常。因爲在json字符串中有控制字符,如',\n,\r如何使用Dojo.fromJson反序列化包含控制字符的Json對象

我該如何在道場解決這個問題?將json字符串轉換爲javascript對象,即使有控制字符也是如此。

我使用Newtonsoft.JsonConvert.SerializeObject將C#oject轉換爲json數據。 Json對象:{"name":"'\"abc\n123\r"}然後,我使用Dojo.fromJson(' {"name":"'\"abc\n123\r"}')將json數據轉換爲javascript對象。

非常感謝!

+0

請顯示輸入字符串和您使用的代碼的示例。 –

+1

當生成這些json數據時,字符串內的控制字符必須被轉義。你可以編寫一些邪惡的解析器將這些「json」數據轉換爲有效的json數據。 – Prusse

+0

我使用Newtonsoft.JsonConvert.SerializeObject將C#oject轉換爲json數據。然後,我使用Dojo.fromJson('{「名稱':'''abc \ n123 \ r」}')來轉換json數據到javascript對象。 –

回答

0

問題,我認爲是應該用三重反斜槓逃脫的雙引號。您可以使用「本地瀏覽器JSON解碼」作爲搜索詞的「dojo fromJson」同義詞。

不知道我的辦法解決C# - 我還沒有測試,但我相信下面應該工作:

string c_sharp_name = "'\"abc\n123\r"; 
// C#Object.name 
c_sharp_name = c_sharp_name. 
    replace('"', '\\"'). // maybe add a slash on serverside 
    replace('\n', '\\\n'). 
    replace('\r', '\\\r'); 

因爲

  • 而失敗:
  • { 「名」:「'\ 「abc \ n123 \ r」} //你的單個反斜槓
  • 這會工作:
  • {「name」:「'\\\」abc \\\ n123 \\\ r「} //工作三重反斜槓轉義
相關問題