【发布时间】:2016-09-08 06:41:46
【问题描述】:
有没有办法反序列化无效的json?
例如,下一个 JSON 反序列化将失败并显示 JsonReaderException
{
'sessionId': 's0j1',
'commandId': 19,
'options': invalidValue // invalid value
}
因为options 属性值无效。
即使options 值无效,是否有一种很好的方法来获取sessionId 和commandId 值?
我知道在反序列化期间可以处理错误 (http://www.newtonsoft.com/json/help/html/SerializationErrorHandling.htm)
var json = "{'sessionId': 's0j1', 'commandId': 19, 'options': invalidValue}";
var settings = new JsonSerializerSettings
{
Error = delegate(object sender, ErrorEventArgs args)
{
args.ErrorContext.Handled = true;
}
});
var result = JsonConvert.DeserializeObject(json, settings);
它将导致result = null。
【问题讨论】:
-
我不认为 Json.NET 可以处理无效的 Json。如果您想解析不是 Json 的内容,请查看 this answer