代码之家  ›  专栏  ›  技术社区  ›  TrongBang

如何使用jackson将yaml中的列表映射到java对象,以便返回父节点值?

  •  0
  • TrongBang  · 技术社区  · 4 年前

    我在java项目中使用jackson

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

      Settings:
        - Setting: number1
          Environments:
            - Name: name
              Value: 3
    

    public class MyYaml {
        private Set<Setting> settings;
    
        @JsonProperty("Settings")
        public String getSettings() {
            return settings;
        }
    
        public class Setting {
            private String name;
            private Environments environments;
    
            @JsonProperty("??????????????????????")
            public String getName() {
                return name;
            }
    
    
    

    name 用于设置类以使其返回 作为价值

    1 回复  |  直到 4 年前
        1
  •  0
  •   josejuan    4 年前

    字段名。

    一个完整的例子

    @Getter @Setter @ToString // lombok for simplicity, can be written at hand
    static class MyYaml {
        private Set<Setting> settings;
    }
    
    @Getter @Setter @ToString
    static class Setting {
        @JsonProperty("setting") // << REQUIRED
        private String name;
        private Set<Environment> environments;
    }
    
    @Getter @Setter @ToString
    static class Environment {
        private String name;
        private int value;
    }
    

    用法示例

    System.out.println(new ObjectMapper(new YAMLFactory()).readValue("settings:\n" +
            "  - setting: setting1\n" +
            "    environments:\n" +
            "      - name: env1\n" +
            "        value: 31\n" +
            "      - name: env2\n" +
            "        value: 12\n" +
            "  - setting: setting2\n" +
            "    environments:\n" +
            "      - name: env2.1\n" +
            "        value: 2.31\n" +
            "      - name: env2.2\n" +
            "        value: 2.12\n", MyYaml.class));
    

    MyYaml(settings=[
      Setting(name=setting2,
        environments=[Environment(name=env2.1, value=2),
                      Environment(name=env2.2, value=2)]),
      Setting(name=setting1,
        environments=[Environment(name=env1, value=31),
                      Environment(name=env2, value=12)])])