【问题标题】:Map a subtree of YAML to POJO using Jackson使用 Jackson 将 YAML 的子树映射到 POJO
【发布时间】:2020-04-22 22:30:48
【问题描述】:

我正在使用 Jackson 的对象映射器将 YAML 映射到我的 Pojo。我的 YAML 是一个配置文件,我只想使用 Jackson 读取特定类型的配置。

以下是我的 YAML 的样子:

A:
  a:
    1: i
    2: ii
    3: iii

  b:
   foo: bar

我想读取 POJO 中 A.a 下的所有数据,即 1,2,3

我的 POJO 看起来像

public class MyPojo{
 String one;
 String two;
 String three;
}

你明白了。我想在 Pojo 中映射特定节点的所有子节点。

我知道我可以readTree("myYaml").get("A").get("a") 并获取所有孩子的列表。但是杰克逊有没有办法像readValue(file, class)一样将该子树转换为Pojo??

【问题讨论】:

    标签: java jackson


    【解决方案1】:

    没有人帮助我,所以我帮助了我自己:)。

    有一个方法treeToValue(TreeNode, Class),所以嵌套treeToValuereadTree 有助于做想要的事情。

    所以为了读取子树A.a,我们需要这样做

    File myYamlFile = new File(someclass.getClass().getClassLoader().getResource("myYAML").getFile())
    MyPojo myPojo = jacksonObjectMapper.treeToValue(jacksonObjectMapper.readTree(myYamlFile).get("A").get("a"), MyPojo.class)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      相关资源
      最近更新 更多