REST Assured 34 - 利用Gson API将Java Object Serialization系列化成 JSON Object

本文介绍了如何使用Gson库将Java对象(POJOs)序列化为JSON对象。通过创建一个Employee类,匹配目标JSON的字段,并使用Gson的toJson()方法,将Java对象转换为JSON字符串。Gson还提供了GsonBuilder进行配置,如设置pretty-printing。示例代码展示了如何将 Employee 对象写入一个JSON文件。
摘要由CSDN通过智能技术生成

REST Assured 系列汇总 之 REST Assured 34 - 利用Gson API将Java Object Serialization系列化成 JSON Object

前面我们有了解POJOs,当你看到本篇文章时,建议你先阅读一下下列相关文章。

什么是Plain Old Java Object (POJO) ?
创建 POJO 作为一个JSON Object Payload
创建 POJO 作为一个JSON Array Payload
创建 POJO 作为A Nested JSON Payload

现在我们将运用 POJOs创建 JSON Objects。将 Java Objects (POJOs) 创建成一个 JSON object (JSON),被称为 Serialization(序列化)。在前面文章已经了解了用Jackson API序列化. 本文将介绍用Gson Java 库序列化一个Jason Object成一个JSON Object。

关于GSON
根据Gson官方文档,Gson是一个Java库,用于将Java Objects转换成JSON,也可以将一个JSON字符串转换成一个等值Java Object。Gson也可以服务于任意的Java Objects,包括没有source code的预先存在的对象。

  1. 提供简单的 toJson()fromJson() 方法用于 Java Objects 和 JSON的转换。
  2. 允许预先存在的不可更改的对象跟JSON的互相转换
  3. 广泛支持Java 泛型
  4. 允许自定义对象表述representations
  5. 支持任意复杂的对象(深继承结构和泛型)

添加Gson最新依赖包

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.8</version>
</dependency>

Gson 库提供一个 Gson 类,这个类是 Gson 的主类。在调用toJson(Object)fromJson(String, Class) 方法前,先要创建一个 Gson 类的实例。Gson实例是线程安全的,可用于多线程。

可以调用 Gson() 创建一个 Gson实例,如果默认的配置可以满足你的需求。也可以用 GsonBuilder 来创建 不同配置的Gson实例,例如:版本配置,pretty-printing, 自定义的JsonSerializer 和 JsonDeserializer。

目标 JSON Object

{
  "firstName" : "Amod",
  "lastName" : "Mahajan",
  "gender" : "M",
  "age" : 29,
  "salary" : 10987.77,
  "married" : false
}

POJO 类

让我们创建一个类,字段名和上面的JSON payload里的节点名保持一样(大小写敏感),因为在解析 Java Object 成 JSON object时,会查看字段的 getter setter 方法, 在这里访问属性没有多大关系。

public class Employee {
 
	private String firstName;
	private String lastName;
	private String gender;
 
	private int age;
	private double salary;
	private boolean married;
 
	public String getFirstName() {
		return firstName;
	}
 
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
 
	public String getLastName() {
		return lastName;
	}
 
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
 
	public String getGender() {
		return gender;
	}
 
	public void setGender(String gender) {
		this.gender = gender;
	}
 
	public int getAge() {
		return age;
	}
 
	public void setAge(int age) {
		this.age = age;
	}
 
	public double getSalary() {
		return salary;
	}
 
	public void setSalary(double salary) {
		this.salary = salary;
	}
 
	public boolean getMarried() {
		return married;
	}
 
	public void setMarried(boolean married) {
		this.married = married;
	}
 
}

POJO to JSON String

Gson 类提供多相重写的 toJson() 方法:
在这里插入图片描述
我们将一个Java Object 转换成一个 JSON字符串写入一个 .json 文件。

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
 
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonIOException;
 
public class SerializeJavaToJsonObjectUsingGSON {
 
	public static void main(String[] args) throws JsonIOException, IOException {
		
		// Create a Employee java object
		Employee employeeObject = new Employee();
		employeeObject.setFirstName("Amod");
		employeeObject.setLastName("Mahajan");
		employeeObject.setAge(29);
		employeeObject.setSalary(10987.77);
		employeeObject.setMarried(false);
		employeeObject.setGender("M");
		
		// Create a Gson object
		Gson gson = new Gson();
		// toJson(Object src) method converts Java object to JSON object
		String employeeJsonSring = gson.toJson(employeeObject);
		// Printing json string. It will be pretty print 
		System.out.println("Non-pretty JSON String :- ");
		System.out.println(employeeJsonSring);
		
		// We can create a configurable Gson instance using GsonBuilder class
		Gson gsonBuilder = new GsonBuilder().setPrettyPrinting().create();
		String employeeJsonSringUsingJsonBuilder = gsonBuilder.toJson(employeeObject);
		System.out.println("Pretty JSON String :- ");
		System.out.println(employeeJsonSringUsingJsonBuilder);
		
		// To write Json object in to a file, we need to pass a FileWriter object which is in direct implementation of 
		// Appendable interface. Make sure you call flush() method otherwise json file will be empty.
		String userDir = System.getProperty("user.dir");
		File outputJsonFile = new File(userDir+ "\\src\\test\\resources\\EmployeePayloadUsingGson.json");
		FileWriter fileWriter = new FileWriter(outputJsonFile);
		gsonBuilder.toJson(employeeObject,fileWriter);
		fileWriter.flush();
		
	}
}

输出:

Non-pretty JSON String :- 
{"firstName":"Amod","lastName":"Mahajan","gender":"M","age":29,"salary":10987.77,"married":false}
Pretty JSON String :- 
{
  "firstName": "Amod",
  "lastName": "Mahajan",
  "gender": "M",
  "age": 29,
  "salary": 10987.77,
  "married": false
}

生成的JSON文件:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值