gpt4 book ai didi

java - 将 YAML 解析为 JSON 后保留行号

转载 作者:行者123 更新时间:2023-12-02 03:10:53 27 4
gpt4 key购买 nike

我收到一个 YAML 文件,我使用 Snakeyaml-engine(适用于 YAML 1.2)对其进行解析。

LoadSettings settings = new LoadSettingsBuilder().build();
Load load = new Load(settings);
Map<String, Object> yamlMap = (Map<String, Object>) load.loadFromString(new String(<yaml_contents_as_byte_array>));

然后我使用 GSON 将其转换为 JsonObject。

Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser parser = new JsonParser();
JsonObject obj = parser.parse(gson.toJson(yamlMap)).getAsJsonObject();

目标是运行此 YAML,并根据已知的数据模型对其进行检查。如果字段不同,则缺少必填字段等。我必须为每个字段返回一个错误。目标是找到某种方法来包含原始 YAML 中问题字段的行号,但由于我通过 JSON 进行验证,因此当遇到错误时我不知道原始行号。我很好奇是否有一些简单的方法来保留 YAML 的行号,也许可以通过在解析每个字段并将其插入映射时向每个字段添加 lineNumber/columnNumber 值?

最佳答案

一个明显的非答案:我不知道您可以在此处使用任何内置机制。因此,您可能必须自己编写代码来实现这两件事:

  • 跟踪 yaml 属性以及行号
  • 使用行号字段增强相应的 Json beans

但老实说,真正的答案(恕我直言):有不同的验证代码,可以“直接”在 yaml 或 Json 输入上工作。我认为出于验证目的而进行的额外转换非常值得怀疑。

关于java - 将 YAML 解析为 JSON 后保留行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56994862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com