JSON.Net反序列化包含特殊字符的字符串

如何使用包含特殊字符的值之一解析JSON字符串?

JObject obj = JObject.Parse(str); 

str值:

 { "message": "some !@#$%^&*(){}:"?/?/|"':>;><{"d":"v"}" } 

我有execption: 解析一个值后遇到一个意外的字符:{。

那个JSON无效。 如果JSON字符串包含特殊字符,如双引号" ,反斜杠\或斜杠/ ,则需要使用反斜杠\来进行转义。(请参阅JSON.org 。)没有JSON解析器,包括Json.Net,将能够处理首先没有正确格式化的JSON字符串。

您的JSON需要看起来像这样才能正确解析:

 { "message": "some !@#$%^&*(){}:\"?/?/|\"':>;><{\"d\":\"v\"}" } 

解决方案是在源处正确序列化字符串。

拿你的JSON和.stringify()吧。

 { "message": JSON.stringify("your text here") } 

如果ASP.NET MVC视图中有原始数据,则可以按照以下方式操作:

 { "message": JSON.stringify("@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.MyString))") } 

您还可以尝试更优选的方式:

 JSON.stringify({ "message" : message });