【发布时间】:2013-12-20 15:31:24
【问题描述】:
如何使用包含特殊字符的值之一解析 JSON 字符串?
JObject obj = JObject.Parse(str);
str值:
{
"message": "some !@#$%^&*(){}:"?/?/|"':>;><{"d":"v"}"
}
我得到了执行:解析一个值后遇到了一个意外字符:{.
【问题讨论】:
标签: c# asp.net-mvc json json.net
如何使用包含特殊字符的值之一解析 JSON 字符串?
JObject obj = JObject.Parse(str);
str值:
{
"message": "some !@#$%^&*(){}:"?/?/|"':>;><{"d":"v"}"
}
我得到了执行:解析一个值后遇到了一个意外字符:{.
【问题讨论】:
标签: c# asp.net-mvc json json.net
那个 JSON 是无效的。如果 JSON 字符串包含特殊字符,如双引号 "、反斜杠 \ 或斜杠 /,则需要使用反斜杠 \ 对其进行转义。 (请参阅JSON.org。)任何 JSON 解析器,包括 Json.Net,都无法处理一开始就没有正确格式化的 JSON 字符串。
您的 JSON 需要如下所示才能被正确解析:
{
"message": "some !@#$%^&*(){}:\"?/?/|\"':>;><{\"d\":\"v\"}"
}
解决办法是在源头正确序列化字符串。
【讨论】:
JsonConvert.SerializeObject()),那么所有特殊字符都将被正确转义。然后就可以解析字符串了。
获取您的 JSON 并 .stringify() 它。
{
"message": JSON.stringify("your text here")
}
如果您的 ASP.NET MVC 视图中有原始数据,您可以按照以下方式进行操作:
{
"message": JSON.stringify("@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.MyString))")
}
您也可以尝试更喜欢的方式:
JSON.stringify({ "message" : message });
【讨论】: