【问题标题】:springboot convert YAML to only one Mapspring boot 将 YAML 转换为只有一个 Map
【发布时间】:2021-04-05 00:13:14
【问题描述】:

这是我的 yaml 配置

a:
  b1: '1'
  b2: '2'
  b3:
    c1: '3'
  b4:
    c2: '4'

我怎样才能得到一个javaBean

class JavaBean{
  Map<String, String> map = new HashMap<>();
}

当我得到这个 bean 时,这个映射值就像

{"a.b1":"1","a.b2","2","a.b3.c1","3","a.b4.c2":"4"}

【问题讨论】:

  • 如果将整个yaml文件转换成Map&lt;String, String&gt;,结果还是很合理的。你能指望什么?如果您想让a: 下方的所有内容成为地图的一部分,您可以使用您的配置将@ConfigurationProperties(prefix="a") 提供给我们,但第三级仍将包含b3.c1b4.c2,因为您将多级结构映射到只是一个键值结构。
  • @RainerJung, @ConfigurationProperties 用于读取属性文件而非 yaml 文件的注释。如果我错了,请纠正我。
  • @Shakthifuture relaxed binding
  • 我想得到一个以'a'开头的键的地图,我尝试使用@ConfigurationProperties(prefix="a"),但是为什么地图是空的

标签: java spring-boot yaml


【解决方案1】:

如果您坚持使用平面地图而不是分层地图,那么配置属性将无济于事,因为它知道如何处理分层数据。你最好的选择是使用类似于json-flattener的库

您需要将 Yaml 文件读取为 json,然后将其导出为 bean

【讨论】:

  • 他想要 yaml 文件进行映射。不是 json 文件。再次阅读问题。
  • Yaml 和 json 是兼容的,因此当您读取 yaml 文件时,您可以有效地在代码中获得一个 json 对象。这只是语法糖。我写了他需要将 Yaml 文件作为 json 读取,这是在 SO 中很容易找到的一行代码
猜你喜欢
  • 2015-12-14
  • 2022-07-21
  • 1970-01-01
  • 2019-07-08
  • 2020-09-23
  • 2018-04-04
  • 2016-03-08
  • 2019-06-08
相关资源
最近更新 更多