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
相关产品推荐
相关产品推荐

