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