【问题标题】:Trouble mapping YAML to Java Object无法将 YAML 映射到 Java 对象
【发布时间】:2017-01-17 21:23:11
【问题描述】:

我是 Yaml 新手,不确定如何将这个简单的 Yaml 映射到 Java 对象。基本上,序列化都完成了,我只需要一个对 Yaml 建模的 Java 对象。

这是我的 Yaml:

thriftResources:
  - class: MissionWork
    jsonIdField: id
    jsonResource: test
  - class: MissionResource
    jsonIdField: uuid
    jsonResource: test2

到目前为止,我的班级是这样的:

@Valid
public ThriftResourceConfiguration thriftResources = new ThriftResourceConfiguration();

public class ThriftResourceConfiguration{
    @NotNull
    @JsonProperty
    ????
}

我正在寻找的是 Java 对象应该是什么样子才能正确映射。

【问题讨论】:

  • 所以基本上问题是“如何在 Java 中反序列化 yaml”?似乎有点宽泛,不是吗?你甚至没有提到你正在使用什么 ser/de 工具。 (如果您还没有选择一个并且正在寻求建议,那么我希望一个 12k-rep 用户会知道这在 SO 上是题外话......)
  • 不不,正是 yaml 对象在 java 中想要的。对不起,说得更清楚了。是的,我意识到这是一个非常基本的问题。它一直让我发疯,试图解除这件事。但我正在为此使用 Katahrsis。
  • 我不熟悉 Katahrsis。如果他们不进行某种魔术 bean 式的反序列化,我希望您在上面提供的 yaml 中返回一个包含 Maps of String -> String 的 List,然后由您决定将该映射列表转换为您想要的任何 Java 类的列表。

标签: java yaml


【解决方案1】:

YamlBeans 可用于序列化和反序列化与 YAML 之间的 Java 对象图。

http://yamlbeans.sourceforge.net/

YamlReader reader = new YamlReader(new FileReader("contact.yml"));
Object object = reader.read();
System.out.println(object);
Map map = (Map)object;
System.out.println(map.get("address"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2012-07-18
    • 2021-12-08
    • 2013-04-17
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多