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));
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM