Java 跳过或忽略Jackson的YAML解析错误

Java 跳过或忽略Jackson的YAML解析错误,java,json,jackson,yaml,Java,Json,Jackson,Yaml,我试图在一个Java应用程序中解析一个大型YAML文件(超过3000行),该应用程序是从另一个系统(PHP应用程序)下载的。我对YAML文件本身的控制有限。对它的更改是手动完成的,而另一个系统中的YAML解析器似乎对YAML的格式更加宽容 我遇到的问题是,当我试图用Jackson解析文件时,我得到了一个异常,因为少数几行的末尾有一个无效字符。这会导致整个解析尝试失败 有没有一种方法可以配置或设置Jackson,如果行或YAML块的格式不正确或具有无效令牌,则可以跳过这些行或YAML块 示例YAM

我试图在一个Java应用程序中解析一个大型YAML文件(超过3000行),该应用程序是从另一个系统(PHP应用程序)下载的。我对YAML文件本身的控制有限。对它的更改是手动完成的,而另一个系统中的YAML解析器似乎对YAML的格式更加宽容

我遇到的问题是,当我试图用Jackson解析文件时,我得到了一个异常,因为少数几行的末尾有一个无效字符。这会导致整个解析尝试失败

有没有一种方法可以配置或设置Jackson,如果行或YAML块的格式不正确或具有无效令牌,则可以跳过这些行或YAML块

示例YAML

example.good\u yaml:
描述:“良好YAML的示例”
例如:bad_yaml:
描述:“不良YAML示例”)
解析代码

ObjectMapper mapper=new yamlapper();
configure(在未知属性上反序列化feature.FAIL,false);
Map result=mapper.readValue(sourceYaml,newtypereference(){});
错误

com.fasterxml.jackson.dataformat.yaml.snakeyaml.error.MarkedYAMLException:解析块映射时
在“阅读器”第4行第3列:
描述:“不良YAML示例”)
^
应为,但找到“”
在“阅读器”第4行第37列:
描述:“不良YAML示例”)
^
在[来源:(文件);第4行,第37列]

这需要SnakeYAML来支持,Jackson使用SnakeYAML进行解析。我不知道它有什么API,所以我很确定它没有任何这样的功能

请注意,从语法错误中恢复是一项相当复杂的工作(即使对于您的特定用例来说似乎很简单),我不知道有哪种YAML实现实现了这一点(因为它们大多数都是PyYAML/libyaml的重写)


假设存在少量重复的语法错误,而这些错误很容易在正则表达式中发现,那么使用位置良好的
sed
命令清理文件可能会更容易。

我怀疑可能是这样,因为我找不到任何人对Jackson执行此操作的示例。谢谢你的确认。