我正在使用 newtonsoft json.net 库。该文件包含一组 json 对象。假设我们在其中一个对象中有一个损坏的 json 字符串,例如:
{
"PublicationDate": "1999-04-14T00:00:00",
!error!,
"Authors": ["Vasya","Dima"],
"Location": "Moscow"
}
有什么办法可以跳过这个对象并继续解析下一个对象吗?
我正在使用 newtonsoft json.net 库。该文件包含一组 json 对象。假设我们在其中一个对象中有一个损坏的 json 字符串,例如:
{
"PublicationDate": "1999-04-14T00:00:00",
!error!,
"Authors": ["Vasya","Dima"],
"Location": "Moscow"
}
有什么办法可以跳过这个对象并继续解析下一个对象吗?
不应处理格式不正确的数据。无效 JSON 格式的数据是非 JSON 格式的数据。
正确的方式
修复任何给你不正确数据的东西。
拐杖方式
如果无法修复源,则将数据转换为正确的格式。
如果错误非常简单,例如,某些元素采用 form 形式
!error!,如您的示例所示,那么您可以在原始字符串上设置正则表达式。如果错误很复杂,那么解决方案也很复杂。从 JSON.NET (
JsonTextReader) 中获取一个解析 JSON 标记的类,修改以适应预期的语法。继承是行不通的,因为所有重要的代码都是私有的。将不得不复制粘贴。@VladD和其他人正试图找到解决方法来“忽略”错误,但这条路是死胡同,因为没有办法摆脱词法分析器的“错误”状态。在这种状态下,他不知道自己身在何处,也不知道接下来会发生什么。