错误的JSON转义序列



我有这个JSON字符串:

{"Time":"11/03/2015 05:32:29.273","Message":"Error loading chirps. Cannot create file U+0022E:U+005CUsersU+005CgwardellU+005CDocumentsU+005CSRChirpU+005CPicturesU+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中的一个错误吗?

我开始使用\u0022和\"and",效果很好。

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

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

最新更新