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

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

在Gson中,要实现自定义适配器,你需要创建一个自定义的TypeAdapter,然后使用GsonBuilder将其注册到Gson实例中。下面是一个简单的示例,展示了如何为自定义对象创建一个自定义适配器:

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

    // 构造函数、getter和setter方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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. 创建一个自定义的TypeAdapter
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. 使用GsonBuilder注册自定义适配器,并创建Gson实例:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Main {
    public static void main(String[] args) {
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.registerTypeAdapter(Person.class, new PersonAdapter());
        Gson gson = gsonBuilder.create();

        // 使用自定义适配器将Person对象序列化为JSON字符串
        Person person = new Person("John Doe", 30);
        String jsonString = gson.toJson(person);
        System.out.println(jsonString); // 输出:{"name":"John Doe","age":30}

        // 使用自定义适配器将JSON字符串反序列化为Person对象
        String inputJson = "{\"name\":\"Jane Doe\",\"age\":25}";
        Person deserializedPerson = gson.fromJson(inputJson, Person.class);
        System.out.println(deserializedPerson.getName() + " " + deserializedPerson.getAge()); // 输出:Jane Doe 25
    }
}

现在,你已经成功地为Person类创建了一个自定义适配器,并使用它序列化和反序列化了Person对象。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/30060.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如何处理集合类型

    Gson Java如何处理集合类型

    Gson 是一个用于将 Java 对象转换为 JSON 字符串以及将 JSON 字符串解析为 Java 对象的库。在处理集合类型时,Gson 可以自动处理数组和列表。以下是如何使用 Gso...

  • Android Xposed能用于应用破解吗

    Android Xposed能用于应用破解吗

    Android Xposed 框架本身是一个用于修改和定制 Android 系统和第三方应用程序的开源框架,但它的使用涉及到法律和道德问题。因此,我无法提供关于如何使用 Xpose...

  • Android Xposed能修改通话记录吗

    Android Xposed能修改通话记录吗

    Android Xposed框架可以修改通话记录。Xposed框架允许用户在不修改APK文件的情况下,对Android系统的各个方面进行定制和修改。通过安装特定的模块,如“Call Log...

  • JQuery Tree怎样优化内存使用

    JQuery Tree怎样优化内存使用

    jQuery Tree 是一个用于显示层次结构数据的 jQuery 插件。为了优化内存使用,你可以采取以下措施: 懒加载(Lazy Loading):只加载当前视图中的节点,当用户展开...