映射yaml数组到java对象

发布于 2025-01-27 17:40:57 字数 590 浏览 3 评论 0原文

如何将YAML数据映射到Java Pojo

 - messageId: A
   category: A
   severity: A

 - messageId: B
   category: B 
   severity: B

该数组将包含多个元素,

public class Message {
    private String messageID;
    private String category;
    private String severity;
}

public class MessageDefinitionList {
    private ArrayList<Message> msgDefinition;
}

后者遵循对象 - 录音器代码对我不起作用,并返回null

MessageDefinitionList msgDefinitionList = mapper.readValue(mapper.writeValueAsString(yaml.load(file)), MessageDefinitionList.class);

How do i map following yaml data to a java pojo

 - messageId: A
   category: A
   severity: A

 - messageId: B
   category: B 
   severity: B

the array will contain multiple elements

public class Message {
    private String messageID;
    private String category;
    private String severity;
}

public class MessageDefinitionList {
    private ArrayList<Message> msgDefinition;
}

Following object-mapper code is not working for me, and returns null

MessageDefinitionList msgDefinitionList = mapper.readValue(mapper.writeValueAsString(yaml.load(file)), MessageDefinitionList.class);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

記柔刀 2025-02-03 17:40:57

这将起作用:

msg.yml

msgDefinition:
- messageId: A
  category: A
  severity: A
- messageId: B
  category: B
  severity: B

)映射的字段名称与YAML中的字段名称相对应

@Data
class Message {
    private String messageId;
    private String category;
    private String severity;
}

@Data
class MessageDefinitionList {
    private List<Message> msgDefinition;
}

pojos(Lombok注释,请参阅杰克逊(Jackson (您可以使用String> inputStream而不是文件 param):

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
MessageDefinitionList result = mapper.readValue(new File("src/main/resources/msg.yml"), MessageDefinitionList.class);

Jackson Yaml Maven依赖关系:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
    <version>2.13.0</version>
</dependency>

This will work:

msg.yml

msgDefinition:
- messageId: A
  category: A
  severity: A
- messageId: B
  category: B
  severity: B

POJOs (lombok annotated, see how the field names correspond to the ones in YAML)

@Data
class Message {
    private String messageId;
    private String category;
    private String severity;
}

@Data
class MessageDefinitionList {
    private List<Message> msgDefinition;
}

Mapping with Jackson (you can use String or InputStream instead of the File param as well):

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
MessageDefinitionList result = mapper.readValue(new File("src/main/resources/msg.yml"), MessageDefinitionList.class);

Jackson YAML maven dependency:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
    <version>2.13.0</version>
</dependency>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文