如何在Java中使用Gson实现自定义JSON反序列化?

一个GSON 库提供了一种通过注册自定义解串器与指定自定义解串行GsonBuilder 如果我们需要一种方法来转换AJ AVA对象JSON。我们可以通过重写com.google.gson.JsonDeserialize r类的deserialize()方法来创建自定义反序列化器。

在下面的示例中,实现了JSON的自定义反序列化 。

示例

import java.lang.reflect.Type;

import com.google.gson.*;

public class CustomJSONDeSerializerTest {

   public static void main(String[] args) {

      Gson gson = new GsonBuilder().registerTypeAdapter(Password.class, new          PasswordDeserializer()).setPrettyPrinting().create();

      String jsonStr = "{" +

                          "\"firstName\": \"Adithya\"," +

                          "\"lastName\": \"Sai\"," +

                          "\"age\": 25," +

                          "\"address\": \"Pune\"," +

                          "\"password\": \"admin@123\"" +

                       "}";

      Student student = gson.fromJson(jsonStr, Student.class);

      System.out.println(student.getPassword().getPassword());

   }

}

class PasswordDeserializer implements JsonDeserializer {

   @Override

   public Password deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)      throws JsonParseException {

      String ecryptedPwd = json.getAsString();

      return new Password(new StringBuffer(ecryptedPwd).toString());

   }

}// Student classclass Student {

   private String firstName;

   private String lastName;

   private int age;

   private String address;

   private Password password;

   public Student(String firstName, String lastName, int age, String address) {

      super();

      this.firstName = firstName;

      this.lastName = lastName;

      this.age = age;

      this.address = address;

   }

   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 String getAddress() {

      return address;

   }

   public void setAddress(String address) {

      this.address = address;

   }

   public Password getPassword() {

      return password;

   }

   public void setPassword(Password password) {

      this.password = password;

   }

   public String toString() {

      return "Student[ " +

                "firstName = " + firstName +

                ", lastName = " + lastName +

                ", age = " + age +

                ", address = " + address +

            " ]";

   }

}// Password classclass Password {

   private String password;

   public Password(String password) {

      super();

      this.password = password;

   }

   public String getPassword() {

      return password;

   }

   public void setPassword(String password) {

      this.password = password;

   }

}

输出结果

admin@123

以上是 如何在Java中使用Gson实现自定义JSON反序列化? 的全部内容, 来源链接: utcz.com/z/358921.html

回到顶部