一、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 序列化应该能够有所帮助。
原创文章,作者:PXNXN,如若转载,请注明出处:https://www.506064.com/n/368725.html
 
 微信扫一扫
微信扫一扫  支付宝扫一扫
支付宝扫一扫 