如何使用对象映射器动态地向类添加属性?

问题描述

我想解析多个 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 中添加一个属性,我希望我的代码能够获取

你能帮忙吗

解决方法

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

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);
    
}