You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Jackson将YAML列表映射为Java对象并获取父节点值

问题修正方案

你现有代码存在多处结构匹配错误,按以下步骤调整即可完成正确映射:

  • 首先调整MyYaml类的getter返回值类型,与成员变量settings的Set<Setting>类型保持一致
  • Setting类的name属性对应YAML中的键为Setting,直接将@JsonProperty值填为"Setting"即可
  • 额外需要修正的匹配问题:
    • YAML中Environments是数组结构,你现有代码定义为单个Environments类型,需要修改为List<Environment>
    • 所有内部类需要添加static修饰,否则Jackson无法完成非静态内部类的实例化
    • 为environments属性添加@JsonProperty("Environments")注解完成字段映射

修正后完整代码示例

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import java.util.Set;

public class MyYaml {
    private Set<Setting> settings;

    @JsonProperty("Settings")
    public Set<Setting> getSettings() {
        return settings;
    }

    public void setSettings(Set<Setting> settings) {
        this.settings = settings;
    }

    // 内部类添加static修饰
    public static class Setting {
        private String name;
        private List<Environment> environments;

        @JsonProperty("Setting")
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @JsonProperty("Environments")
        public List<Environment> getEnvironments() {
            return environments;
        }

        public void setEnvironments(List<Environment> environments) {
            this.environments = environments;
        }
    }

    public static class Environment {
        private String name;
        private Integer value;

        @JsonProperty("Name")
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @JsonProperty("Value")
        public Integer getValue() {
            return value;
        }

        public void setValue(Integer value) {
            this.value = value;
        }
    }
}

内容的提问来源于stack exchange,提问作者TrongBang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:18:03