Json.net 错误的JSON转义序列
我有一个JSON字符串:Json.net 错误的JSON转义序列,json.net,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
{"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标准
这个验证器告诉我它可以:
但是,当我运行此代码时:
public class TAction
{
public string Action = "";
}
...
TAction Params = JsonConvert.DeserializeObject<TAction>(JSON);
在位置88处是第一个转义标记:\U+0022
怎么了
这是JsonConvert中的一个bug吗?我开始使用\u0022和\“和\n,这很好 然后我有了另一个想法,更仔细地研究了我在移动客户端上使用的类,发现TJSONObject(Delphi Object Pascal)除了ToString之外还有另一个stringify方法,它不做任何转义。事实证明,ToJSON方法做了所有需要的转义,并且与JsonConvert(在我的Asp.net web服务中)兼容所以我根本不需要做任何逃跑的习惯
谢谢你的指点。它们让我朝着正确的方向前进。据我所知,
U
应该是U
,而+
根本不应该在那里。你看,在这方面,用\“
转义可能更常见。如果没有其他错误,则更紧凑。Bob77是正确的——JSON转义序列是。它应该是\u0022
而不是\U+0022
。顺便说一句,您的JSON不会使用
Newtonsoft.Json.JsonReaderException: Bad JSON escape sequence: \U. Path 'Message', line 1, position 88.