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

时间:2013-12-20 15:31:24

标签: c# asp.net-mvc json json.net

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

JObject obj = JObject.Parse(str);

str值:

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

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

2 个答案:

答案 0 :(得分:7)

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

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

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

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

答案 1 :(得分:1)

拿走你的JSON和.stringify()

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

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

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

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

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