java - 使用 Jackson 将 YAML 的子树映射到 POJO
问题描述
我正在使用杰克逊的对象映射器将 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?
解决方案
没有人帮助我,所以我帮助了我自己:)。
有一种方法treeToValue(TreeNode, Class)
,所以嵌套treeToValue
并readTree
有助于做想要的事情。
所以为了读取子树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)
推荐阅读
- javascript - Bootstrap 4中的响应列高度
- hololens - HL2 睡眠设置
- mysql - 不使用 GROUP BY 从重复数据中获取唯一记录
- javascript - 数组中的对象键求和,但求和仅在函数javascript loadsh中提供单词
- optaplanner - Optaplanner 缺少无参数 #countDistinct 方法重载
- python-3.x - 使用 POST 将文件上传到 Flask 应用程序时出现 308 重定向
- python - 散景标签字体大小响应图形大小
- python - 用 plotly 设置 dpi
- python - 将列表转换为 3 维 numpy 数组
- java - JTextPane 动态缩进!!!情况