【发布时间】:2020-02-28 12:09:20
【问题描述】:
如何在 Newtonsoft JSON 中跳过/忽略/处理无效的 json 对象?
假设我们有这样的字符串:
[{
"$id": "xc1",
"sdfdsgds0sdfsadgdxc,sfgsagdfgdsfdm",
"gxcgdfs"
}, {
"$id": "2",
"Property1": "Value",
"Property2": "Value2"
}]
在做的时候
JsonConvert.DeserializeObject<T>(jsonString);
所以第一个对象无效,但我想读取第二个有效对象,但出现 JsonReaderException,有没有办法实现忽略/跳过数组中的无效对象并进一步反序列化?
【问题讨论】:
-
第一种方法也将问题冒泡收集,因此整个收集为空。
-
当 JSON 本身是 malformed 时并不容易(在您的情况下就是这种情况),而不仅仅是对当前的反序列化目标无效。
JsonTextReader是一个维护当前令牌类型和一组有效转换的状态机,如果 JSON 令牌流不符合 JSON standard,解析器将不知道接下来会发生什么。 (在您的情况下,有一个属性名称但没有值)。在这种情况下继续前进会成为问题。
标签: c# json json.net deserialization