【问题标题】:How to map property in application.yml to JsonNode? (Spring)如何将 application.yml 中的属性映射到 JsonNode? (春天)
【发布时间】:2021-04-06 22:47:06
【问题描述】:

@ConfigurationProperties bean 中,我可以将下面application.yml 文件的customers 属性映射到List<Customer>,但我想将其映射到Jackson JsonNode。这可能吗?如果有,怎么做?

shop:
  name: "Sam's Bikes"
  customers:
    - name: Lucy
      age: 26
    - name: James
      age: 24

这就是我想要实现的目标:

@ConfigurationProperties("shop")
public class ShopProperties() {
    private String name;
    private JsonNode customers;
}

【问题讨论】:

  • 我不知道你想如何映射到 JsonNode ?你能告诉我们你的预期输出是什么吗?看起来您正在寻找一些需求和答案
  • @Deadpool 我已经添加了我想要实现的目标。只是想知道在春季是否有一种我不知道的巧妙方法。
  • 为什么特别是 JsonNode 或为什么在 Map<String,String> 上?
  • 在我的示例中,customers 是一个数组。但它也有可能是一张地图,甚至只是一个字符串。所以我需要将它绑定到一个可以容纳所有这些情况的对象,比如JsonNode

标签: spring spring-boot configuration jackson application.properties


【解决方案1】:

由于application.yml 中的customers 是对象数组格式,我建议使用以下代码将它们收集到List<Customer>List<Map<String,Object>> 中,@Data 是lombok 注释,如果您不使用lombok添加getter和setter

@ConfigurationProperties("shop")
@Data
@Configuration
public class TestConfig {

    private String name;
    private List<Map<String,Object>> customers;  //[{name=Lucy, age=26}, {name=James, age=24}]
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 2014-09-06
    • 2021-03-05
    相关资源
    最近更新 更多