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

oha*_*ryl 3 c# asp.net-mvc json json.net

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

JObject obj = JObject.Parse(str);
Run Code Online (Sandbox Code Playgroud)

str值:

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

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

Bri*_*ers 7

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

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

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

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


Rom*_*kin 2

获取您的 JSON 和.stringify()它。

{
  "message": JSON.stringify("your text here")
}
Run Code Online (Sandbox Code Playgroud)

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

{
  "message": JSON.stringify("@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.MyString))")
}
Run Code Online (Sandbox Code Playgroud)

您还可以尝试更喜欢的方式:

JSON.stringify({ "message" : message });
Run Code Online (Sandbox Code Playgroud)

  • @ohavryl,实际上你正在尝试从客户端传递损坏的 json 。所以我认为最好的方法是修复javascript。 (4认同)