JSON字段与实体类属性名称不一致时解决方法
1.使用FastJson的@JsonField("name" = "***")注解解决
①导入依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.76</version> </dependency>
②字段添加注解
多个字段映射到同一属性
③JSON格式化
EventListVO eventListVO = JSON.parseObject(JSONUtil.toJsonStr(data), EventListVO.class);
2.使用google gson的@SerializedName("***")注解解决
①导出依赖
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> </dependency>
②使用注解
public class Employee { private Integer id; private String firstName; private String lastName; @SerializedName(value = "emailId", alternate = "emailAddress") //alternate后的字段,也可以映射到这个属性上 private String email; }
③格式化
public class GsonDemo{ public Employee format(){ System.out.println(emp);String json = "{'id': 1001," + "'firstName': 'Lokesh'," + "'lastName': 'Gupta'," + "'email': 'howtodoinjava@gmail.com'," + "'emailAddress': 'admin@gmail.com'}"; Gson gson = new GsonBuilder().setPrettyPrinting().create(); Employee emp = gson.fromJson(json, Employee.class); System.out.println(emp); } }
3.使用jackson包里的@JsonProperty("***")注解解决
①导入依赖
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>版本号</version> </dependency>
②使用注解
public class Student{ @JsonProperty(value = "name") private String realName; }
③进行序列化反序列化
public class Main { public static void main(String[] args) throws JsonProcessingException { Student student = new Student(); student.setRealName("张三"); System.out.println(new ObjectMapper().writeValueAsString(student)); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构