首页 > 解决方案 > 如何使用对象映射器动态向类添加属性?

问题描述

我想解析多个 yaml 文件并将它们添加到表格上。我有解析 yaml 的代码,但我正在尝试找出一种将属性添加到类的方法(如果不可用)。

下面是我的代码

public void readyml() throws JsonParseException, JsonMappingException, IOException{
        
    ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
    mapper.findAndRegisterModules();

    Order order = mapper.readValue(new File("src/main/resources/orderInput.yaml"), Order.class);
    
    System.out.println("order ::: " + order);
    
}

上面的代码读取src/main/resources/orderInput.yaml

orderNo: A001
date: 2019-04-17
customerName: Customer, Joe
orderLines:
    - item: No. 9 Sprockets
      quantity: 12
      unitPrice: 1.23
    - item: Widget (10mm)
      quantity: 4
      unitPrice: 3.45

将它们映射到OrderOrderList类,并打印值

我的问题是,如果 yaml 中添加了新属性,我希望我的代码能够获取它

你能帮忙吗

标签: javaspring-bootjacksonyamljackson-dataformat-xml

解决方案


修改代码以将属性映射到映射,而不是类

public void readyml() throws JsonParseException, JsonMappingException, IOException{
        
    ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
    mapper.findAndRegisterModules();

    Map<String,Object> dynamicProperties = new HashMap<String,Object>();
        
    dynamicProperties = mapper.readValue(new File("src/main/resources/orderInput.yaml"), Map.class);
        
    System.out.println("order ::: " + dynamicProperties);
    
}

推荐阅读