您的位置:

什么是Json序列化

Json(JavaScript Object Notation)是一种轻量级的数据交换格式,易于读写,便于机器解析和生成。Json序列化就是将对象或数据结构转换成Json格式的字符串。Json序列化后数据传输、存储和处理都更方便。

Json序列化

Json序列化是指将一个对象序列化为Json格式的字符串。Json格式的字符串一般具有这样的特征:

{
    "name": "Tom",
    "age": 23,
    "gender": "Male"
}

对象可以是类对象,也可以是数组、字典等数据结构。通过Json序列化可以将对象转换为Json字符串,存储到文件中,也可以在网络通信中传输。

Json反序列化是什么意思

Json反序列化是指将一个Json格式的字符串转换为对象。Json格式的字符串可以通过网络通信获取,也可以从文件中读取。

String jsonStr = "{\n" +
        "    \"name\": \"Tom\",\n" +
        "    \"age\": 23,\n" +
        "    \"gender\": \"Male\"\n" +
        "}";
Gson gson = new Gson();
Person person = gson.fromJson(jsonStr, Person.class);

Json反序列化常用工具类库有Json、Gson、FastJson等。

Json为什么要序列化

Json序列化是为了解决数据的传输、存储和处理问题。传输数据需要解决数据的格式问题,不同的语言和平台对数据的处理方式不一样,要想在两个平台或不同语言之间进行数据传输,就需要一个通用的数据格式。存储数据也需要解决数据的格式问题。处理数据需要快速的处理大量数据,Json格式的数据可以快速进行读取、遍历、操作和筛选。

可序列化是什么意思

可序列化是指一个类对象可以序列化。一个类对象要想序列化和反序列化,需要满足Java序列化标准,即实现Serializable接口。如果不实现该接口,该对象就不能进行序列化。

// 可序列化类
public class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    private String name;
    private Integer age;
    private String gender;
    // 省略getter和setter方法
}

// 不可序列化类
public class Animal {
    private String name;
    private Integer age;
    private String gender;
    // 省略getter和setter方法
}

Json反序列化失败是什么意思

Json反序列化失败是指将一个Json格式的字符串转换成Java对象失败。反序列化失败的原因有很多,比如Json格式错误、Java对象类结构不匹配、格式类型不匹配等。一般通过捕捉异常或者判空来解决反序列化失败问题。

String jsonStr = "{\n" +
        "    \"name\": \"Tom\",\n" +
        "}";
Gson gson = new Gson();
Person person = null;
try {
    person = gson.fromJson(jsonStr, Person.class);
} catch (JsonSyntaxException e) {
    e.printStackTrace();
    System.out.println("json格式错误");
}
if (person == null) {
    System.out.println("json反序列化失败");
}

Json序列化和反序列化方法选取

Json序列化和反序列化方法有很多种,常见的有Java自带的序列化和Gson的序列化。Java自带的序列化需要实现Serializable接口,但是序列化体积大、序列化速度慢、面向Java对象,不支持跨平台。Gson序列化有很高的可扩展性,序列化体积小、速度快,支持跨语言和平台,但是不能序列化内部类和匿名类。

// 使用java自带序列化
public class SerializeUtil {
    public static byte[] serialize(Object obj) throws IOException {
        ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
        ObjectOutputStream objStream = new ObjectOutputStream(byteStream);
        objStream.writeObject(obj);
        objStream.flush();
        byte[] bytes = byteStream.toByteArray();
        objStream.close();
        byteStream.close();
        return bytes;
    }

    public static Object deserialize(byte[] bytes) throws IOException, ClassNotFoundException {
        ByteArrayInputStream byteStream = new ByteArrayInputStream(bytes);
        ObjectInputStream objStream = new ObjectInputStream(byteStream);
        Object obj = objStream.readObject();
        objStream.close();
        byteStream.close();
        return obj;
    }
}

// 使用Gson序列化
String jsonStr = gson.toJson(person);
person = gson.fromJson(jsonStr, Person.class);

根据实际情况,选择合适的序列化方法。

什么是Json序列化

2023-05-18
java方法整理笔记(java总结)

2022-11-08
java笔记,大学java笔记

2022-11-28
什么是序列化

2023-05-18
印象笔记记录java学习(Java成长笔记)

2022-11-12
java如何使用json序列化,json序列化是什么意思

2022-11-25
java笔记,尚硅谷java笔记

2022-12-01
python基础学习整理笔记,Python课堂笔记

2022-11-21
json是什么文件,json格式文件 是干什么的

本文目录一览: 1、json文件是干什么的 2、json是什么文件 3、json是什么意思 json文件是干什么的 json是一种轻量级数据交换格式。易于阅读和编写,也易于机器解析和生成,其本身是一串

2023-12-08
序列化指定json格式的文件(序列化指定json格式的文件是

本文目录一览: 1、c#如何序列化与反序列化json文件 2、java怎么把对象序列化成.json文件 3、json格式是什么? c#如何序列化与反序列化json文件 使用Newtonsoft.Jso

2023-12-08
java学习笔记(java初学笔记)

2022-11-14
java对象转json是序列化吗(jdk序列化和json序列

本文目录一览: 1、redis 存储java对象是json字符串还是序列化 2、(JSON) 序列化和反序列化,这个是什么意思呀? 3、java怎么把对象序列化成.json文件 4、java序列化和反

2023-12-08
重学java笔记,java笔记总结

2022-11-23
发篇java复习笔记(java课程笔记)

2022-11-09
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
python基础笔记整理(python基础教程总结)

2022-11-12
java中json对象序列化,java序列化和json序列化

2022-11-24
json是什么编程语言(json c语言)

本文目录一览: 1、json是什么 2、json是什么意思 3、java中的json是什么意思 4、json格式是什么? 5、json 是什么意思 能举个实用的例子说明具体怎么使用和含义 6、请问Ja

2023-12-08
最新python学习笔记3,python基础笔记

2022-11-17
python的用法笔记本(笔记本学python)

2022-11-16