您的位置:

Java Json序列化详解

一、Json 简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得json成为理想的数据交换语言。比起xml的灵活性,json更加轻量级、易于阅读和书写。

下面是一个Json的例子:

{
  "name": "John",
  "age": 30,
  "city": "New York"
}

二、Java Json 序列化

1. jackson 库

Jackson 是一款快速、低消耗、多功能的 Java 库,用于处理 Java 对象与 JSON 数据之间的转换。Jackson 提供了两个主要的 API:一是 Streaming API,另一个是 Data Binding API。

2. Fastjson 库

Fastjson 是一个 Java 的 JSON 解析器和生成器,它是目前最快的 JSON 处理器之一。

三、使用 Jackson 库进行 Json 序列化

1. 添加 Jackson 库的 Maven 依赖

在 pom.xml 文件中添加以下依赖:

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.9.8</version>
</dependency>

2. 创建一个 Java 类

在项目中创建一个实体类,例如 Person:

public class Person {
   private String name;
   private int age;
   private String city;

   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;
   }

   public String getCity() {
      return city;
   }

   public void setCity(String city) {
      this.city = city;
   }
}

3. 在代码中实现序列化

下面是一个例子,将 person 对象序列化为 json 格式:

public class JsonDemo {
    public static void main(String[] args) throws JsonProcessingException {
       Person person = new Person();
       person.setName("John");
       person.setAge(30);
       person.setCity("New York");
       
       ObjectMapper objectMapper = new ObjectMapper();
       String jsonString = objectMapper.writeValueAsString(person);
       System.out.println(jsonString);
    }
}

输出结果如下:

{"name":"John","age":30,"city":"New York"}

四、使用 Fastjson 库进行 Json 序列化

1. 添加 Fastjson 库的 Maven 依赖

在 pom.xml 文件中添加以下依赖:

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.47</version>
</dependency>

2. 在代码中实现序列化

下面是一个例子,将 person 对象序列化为 json 格式:

public class JsonDemo {
    public static void main(String[] args) {
       Person person = new Person();
       person.setName("John");
       person.setAge(30);
       person.setCity("New York");
       
       String jsonString = JSON.toJSONString(person);
       System.out.println(jsonString);
    }
}

输出结果如下:

{"name":"John","age":30,"city":"New York"}

五、Json 序列化注意事项

1.对象必须提供无参构造函数

Jackson 和 Fastjson 在编写时,都需要默认构造函数(无参构造函数)。因为在反序列化时,需要先创建一个空对象,再给其成员变量赋值。所以,如果对象没有无参构造函数,就会反序列化失败。

2.对象成员变量必须保留 getter 和 setter 方法

在进行序列化和反序列化时,会通过反射获取对象的成员变量,如果这些成员变量没有提供 getter 和 setter 方法,则会出现异常。

3.其他注意事项

对于特殊字符,例如缩进和换行等,可以设置序列化的特性,比如 jackson 中可以设置 SerializationFeature.INDENT_OUTPUT。

结论

Java Json 序列化是一种比较常见的操作。本文详细介绍了使用 Jackson 和 Fastjson 库进行 Json 序列化的方法,同时讲述了在进行序列化时需要注意的事项。相信对 Java 开发人员进行 Json 序列化应该能够有所帮助。

java方法整理笔记(java总结)

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

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

2022-11-28
印象笔记记录java学习(Java成长笔记)

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

2022-12-01
java学习笔记(java初学笔记)

2022-11-14
Java Json序列化详解

2023-05-22
java客户端学习笔记(java开发笔记)

2022-11-14
重学java笔记,java笔记总结

2022-11-23
java包笔记,Java语言包

2022-11-18
java基础知识学习笔记一,Java基础笔记

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

2022-11-24
core解析json的笔记(c json解析)

本文目录一览: 1、如何解析json中map数据 2、fasterxml.jackson.core.jsonparser.feature是哪个jar包的 3、spring mvc 怎么获取json 4

2023-12-08
java如何使用json序列化,jdk序列化和json序列化

本文目录一览: 1、java 怎么把字典怎么封装json格式 2、java怎么把对象序列化成.json文件 3、Jackson序列化&&FastJson序列化API使用 4、Java怎么把JSON数据

2023-12-08
java对象转json是序列化吗(jdk序列化和json序列

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

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

2022-11-25
python基础学习整理笔记,Python课堂笔记

2022-11-21
为知笔记私有化部署

2023-05-21
快速上手com.fasterxml.jackson:处理JS

2023-05-16
Spring Boot学习笔记

2023-05-17