坏JSON转义序列

时间:2015-11-03 11:00:42

标签: json.net

我有这个JSON字符串:

{"Time":"11/03/2015 05:32:29.273","Message":"Error loading chirps. Cannot create file \U+0022E:\U+005CUsers\U+005Cgwardell\U+005CDocuments\U+005CSRChirp\U+005CPictures\U+0022. Access is denied","Source":"BT","Method":"GetChirpsFromServer.SaveMedia.SaveBitmap","ChirpID":"9851","LogType":"Error","DeviceType":"Win","Action":"RecordLog","UserID":"98000001","DeviceID":"3675"}

尽可能接近它符合RFC 7159 JSON标准。

这个验证器告诉我没关系: http://freeformatter.com/json-validator.html

然而,当我通过这段代码运行它时:

public class TAction
{
    public string Action = ""; 
}
...
TAction Params = JsonConvert.DeserializeObject<TAction>(JSON);

我明白了:

Newtonsoft.Json.JsonReaderException: Bad JSON escape sequence: \U. Path 'Message', line 1, position 88.

在第88位是第一个逃脱的标记:\ U + 0022

有什么问题?

这是JsonConvert中的错误吗?

1 个答案:

答案 0 :(得分:0)

我开始使用\ u0022和\&#34;和\ n,这很好。

然后我得到了另一个想法并更仔细地查看我在移动客户端上使用的类,发现TJSONObject(Delphi Object Pascal)除了ToString之外还有另一个字符串化方法,它不进行任何转义。事实证明,ToJSON方法可以完成所有必需的转义,并与JsonConvert(在我的Asp.net网络服务中)兼容,因此我根本不需要进行任何自定义转义。

感谢指点。他们让我朝着正确的方向前进。