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

JSON转POJO时如何将Salary类定义为Root类的内部类

带Lombok简化版(日常开发常用,代码更简洁)

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Root {
    private String title;
    private String street;
    private String city;
    private String country_code;
    private String address_text;
    private String marker_icon;
    private String workplace_type;
    private String company_name;
    private String company_url;
    private String company_size;
    private String experience_level;
    private String latitude;
    private String longitude;
    private String published_at;
    private Boolean remote_interview;
    private String id;
    private List<EmploymentType> employment_types;
    private String company_logo_url;
    private List<Skill> skills;
    private Boolean remote;

    // 嵌套的Salary静态内部类
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Salary {
        private Integer from;
        private Integer to;
        private String currency;
    }

    // 配套的EmploymentType静态内部类,直接引用内部Salary类
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class EmploymentType {
        private String type;
        private Salary salary;
    }

    // 配套的Skill静态内部类
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Skill {
        private String name;
        private Integer level;
    }
}

无Lombok原生Java版(无需额外依赖)

import java.util.List;

public class Root {
    private String title;
    private String street;
    private String city;
    private String country_code;
    private String address_text;
    private String marker_icon;
    private String workplace_type;
    private String company_name;
    private String company_url;
    private String company_size;
    private String experience_level;
    private String latitude;
    private String longitude;
    private String published_at;
    private Boolean remote_interview;
    private String id;
    private List<EmploymentType> employment_types;
    private String company_logo_url;
    private List<Skill> skills;
    private Boolean remote;

    public Root() {}

    // 全参构造、getter、setter可根据需求自行生成

    // 嵌套的Salary静态内部类
    public static class Salary {
        private Integer from;
        private Integer to;
        private String currency;

        public Salary() {}

        // 全参构造、getter、setter可根据需求自行生成
    }

    // EmploymentType静态内部类
    public static class EmploymentType {
        private String type;
        private Salary salary;

        public EmploymentType() {}

        // 全参构造、getter、setter可根据需求自行生成
    }

    // Skill静态内部类
    public static class Skill {
        private String name;
        private Integer level;

        public Skill() {}

        // 全参构造、getter、setter可根据需求自行生成
    }
}

注意事项

  • 所有内部类都使用static修饰,避免序列化/反序列化时出现绑定外部类引用的异常,也不会额外占用内存
  • 字段名完全匹配JSON的key,不需要额外加别名注解,如果需要改成Java标准驼峰命名,可添加@JsonProperty(Jackson)或@SerializedName(Gson)注解做字段映射

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:06:03