如何將 JSON 反序列化到 Java 中的現有物件?


Flexjson 是一個輕量級java庫,用於以 JSON 格式序列化和反序列化 java bean、map、array 和集合。我們還可以使用JSONDeserializer 類的deserializeInto() 方法將JSON 字串反序列化為現有物件,此方法將給定的輸入反序列化為現有物件 target。json 輸入中的值可以覆蓋目標物件中的值。這意味著如果 JSON 中包含一個值,則可以建立一個新物件並將其設定到現有物件中。

語法

public T deserializeInto(String input, T target)

示例

import flexjson.JSONDeserializer;
public class JsonDeserializeTest {
   public static void main(String[] args) {
      Employee emp = new Employee("Adithya", "Ram", 25, 35000.00);
      System.out.println(emp);
      JSONDeserializer<Employee> deserializer = new JSONDeserializer<Employee>();
      String jsonStr =
                     "{" +
                     "\"age\": 30," +
                     "\"salary\": 45000.00" +
                     "}";
      emp = deserializer.deserializeInto(jsonStr, emp);
      System.out.println(emp);
   }
}
// Employee class
class Employee {
   private String firstName;
   private String lastName;
   private int age;
   private double salary;
   public Employee() {}
   public Employee(String firstName, String lastName, int age, double salary) {
      super();
      this.firstName = firstName;
      this.lastName = lastName;
      this.age = age;
      this.salary = salary;
   }
   public String getFirstName() {
      return firstName;
   }
   public void setFirstName(String firstName) {
      this.firstName = firstName;
   }
   public String getLastName() {
      return lastName;
   }
   public void setLastName(String lastName) {
      this.lastName = lastName;
   }
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
   public double getSalary() {
      return salary;
   }
   public void setSalary(double salary) {
      this.salary = salary;
   }
   public String toString() {
      return "Employee[ " +
      "firstName = " + firstName +
      ", lastName = " + lastName +
      ", age = " + age +
      ", salary = " + salary +
      " ]";
   }
}

輸出

Employee[ firstName = Adithya, lastName = Ram, age = 25, salary = 35000.0 ]
Employee[ firstName = Adithya, lastName = Ram, age = 30, salary = 45000.0 ]

更新於:06-Jul-2020

3K+ 瀏覽

開啟你的職業生涯

完成課程獲得認證

開始
廣告