legongju.com
我们一直在努力
2024-12-23 18:15 | 星期一

Gson Java怎样实现自定义类型适配器

要使用Gson库在Java中实现自定义类型适配器,你需要创建一个自定义的TypeAdapter,并在其中编写序列化和反序列化的逻辑。以下是一个简单的示例,展示了如何为自定义类Person实现自定义类型适配器:

  1. 首先,确保你已经添加了Gson库的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖:

    com.google.code.gson
    gson
    2.8.9

  1. 创建一个自定义类Person
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // getter 和 setter 方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
  1. 创建一个自定义类型适配器PersonAdapter
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;

public class PersonAdapter extends TypeAdapter {

    @Override
    public void write(JsonWriter out, Person value) throws IOException {
        if (value =https://www.yisu.com/ask/= null) {"name").value(value.getName());
        out.name("age").value(value.getAge());
        out.endObject();
    }

    @Override
    public Person read(JsonReader in) throws IOException {
        if (in.peek() == null) {
            in.nextNull();
            return null;
        }

        Person person = new Person("", 0);
        in.beginObject();
        while (in.hasNext()) {
            String name = in.nextName();
            switch (name) {
                case "name":
                    person.setName(in.nextString());
                    break;
                case "age":
                    person.setAge(in.nextInt());
                    break;
                default:
                    in.skipValue();
                    break;
            }
        }
        in.endObject();
        return person;
    }
}
  1. 注册自定义类型适配器并使用它:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Main {
    public static void main(String[] args) {
        // 创建一个Person对象
        Person person = new Person("John Doe", 30);

        // 创建一个GsonBuilder对象,并注册自定义类型适配器
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.registerTypeAdapter(Person.class, new PersonAdapter());

        // 使用Gson实例进行序列化和反序列化
        Gson gson = gsonBuilder.create();
        String json = gson.toJson(person);
        System.out.println("Serialized JSON: " + json);

        Person deserializedPerson = gson.fromJson(json, Person.class);
        System.out.println("Deserialized Person: " + deserializedPerson.getName() + ", " + deserializedPerson.getAge());
    }
}

运行上述代码,你将看到如下输出:

Serialized JSON: {"name":"John Doe","age":30}
Deserialized Person: John Doe, 30

这样,你就成功地为自定义类Person实现了一个自定义类型适配器。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/30160.html

相关推荐

  • java linkedhashset 有啥优缺点

    java linkedhashset 有啥优缺点

    Java中的LinkedHashSet是一个基于哈希表和链表实现的有序的集合(Set)。它继承自HashSet,实现了Set接口。LinkedHashSet的主要优点和缺点如下:
    优点: 保...

  • java linkedhashset 怎么遍历

    java linkedhashset 怎么遍历

    在 Java 中,你可以使用迭代器(Iterator)或者增强型 for 循环来遍历 HashSet。但是,由于 HashSet 是无序的,所以遍历的结果可能与添加时的顺序不同。如果你需...

  • java linkedhashset 和 hashmap 区别

    java linkedhashset 和 hashmap 区别

    Java中的LinkedHashSet和HashMap都是用于存储键值对的数据结构,但它们之间存在一些关键区别: 继承关系: HashMap是Java中的一个核心类,它实现了Map接口。

  • java linkedhashset 适合什么场景

    java linkedhashset 适合什么场景

    Java中的LinkedHashSet是一个哈希表和链表实现的有序的集合(Set)。它继承了HashSet,实现了Set接口。LinkedHashSet适用于以下场景: 需要保持元素插入顺序:Li...

  • Gson Java如何处理JSON嵌套对象

    Gson Java如何处理JSON嵌套对象

    要使用Gson库处理Java中的JSON嵌套对象,首先需要将JSON字符串解析为Java对象模型,然后可以使用这些对象进行操作 添加Gson依赖项 在您的项目中添加Gson依赖项。...

  • Gson Java怎样优化JSON解析速度

    Gson Java怎样优化JSON解析速度

    要优化Gson在Java中的JSON解析速度,可以尝试以下方法: 使用最新版本的Gson库:确保您使用的是Gson的最新版本,因为新版本可能包含性能改进和优化。 使用GsonBu...

  • Gson Java能自定义反序列化忽略字段吗

    Gson Java能自定义反序列化忽略字段吗

    是的,Gson Java 允许你自定义反序列化过程以忽略某些字段。你可以通过实现 JsonDeserializer 接口来完成这个任务。下面是一个简单的示例:
    import com.goo...

  • Gson Java如何处理JSON字段映射

    Gson Java如何处理JSON字段映射

    Gson 是一个用于将 Java 对象转换为 JSON 字符串以及将 JSON 字符串解析为 Java 对象的库 添加 Gson 依赖 首先,确保已将 Gson 库添加到项目中。如果使用 Maven,...