序列化与反序列化(Java List、Json)

1、基于谷歌Gson进行实现,list序列化比较简单,直接调用toJson()方法即可,而反序列化时需要借助

Type type = new TypeToken<List<Person>>(){}.getType()获取泛型集合类型,然后调用fromJson(list,type)方法。
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

public class MyGson {
    public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
        list.add(new Person(2,"关羽",24,"guanyu@qq.com","17766358368"));
        list.add(new Person(3,"张飞",23,"zhangfei@sohu.com","15722552255"));
        Gson gson = new Gson();
        //list序列化直接调用toJson()方法即可
        String strList = gson.toJson(list);
        System.out.println("list集合序列化后="+strList);
        //进行反序列化的时候,需要传入泛型的类型
        Type type = new TypeToken<List<Person>>(){}.getType();
        //于是得到了泛型集合List<Person>
        List<Person> personList = gson.fromJson(strList, type);
        System.out.println("list集合反序列化后="+personList);
        //遍历集合,而得到Person对象
        for (Person person : personList) {
            System.out.println(person);
        }
    }
}

 2、运行结果:

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java 中,List 对象可以通过序列化来进行持久化存储或网络传输。List 序列化的实现可以通过以下步骤: 1. 确保 List 中的元素都实现了 Serializable 接口。 2. 创建一个 ObjectOutputStream 对象,将 List 对象写入 ObjectOutputStream 中。 3. 关闭 ObjectOutputStream 对象。 4. 创建一个 ObjectInputStream 对象,从 ObjectInputStream 中读取 List 对象。 5. 关闭 ObjectInputStream 对象。 以下是一个简单的示例代码,演示了如何将 List 对象进行序列化反序列化: ``` import java.io.*; import java.util.ArrayList; import java.util.List; public class ListSerializationDemo { public static void main(String[] args) throws IOException, ClassNotFoundException { List<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("C++"); // 序列化 List 对象 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("list.ser")); oos.writeObject(list); oos.close(); // 反序列化 List 对象 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("list.ser")); List<String> newList = (List<String>) ois.readObject(); ois.close(); System.out.println(newList); } } ``` 在上面的代码中,我们首先创建了一个 List 对象,并向其中添加了三个元素。然后我们使用 ObjectOutputStream 对象将 List 对象写入到一个名为 "list.ser" 的文件中。接着我们使用 ObjectInputStream 对象从 "list.ser" 文件中读取 List 对象,并将其转换为 List<String> 类型。最后,我们打印出了反序列化后的 List 对象,以确保序列化反序列化过程都成功了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值