栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

REST Assured 61 - Deserialize Using JsonPath

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

REST Assured 61 - Deserialize Using JsonPath

REST Assured 系列汇总 之 REST Assured 61 - Deserialize Using JsonPath 介绍

早期我们有介绍 De-Serialization – JSON Object To Java Object Using Jackson API,同样我们也可以通过 JsonPath 来反序列化。

前提条件

默认 Rest Assured 是包括 JsonPath 依赖库的。所以只要添加了 Rest Assured 依赖库,就没有必要再添加 JsonPath 依赖库了。


  io.rest-assured
  rest-assured
  4.4.0

用 JsonPath 反序列化Deserialization

We will take a very simple JSON Object and will create a POJO for it.
将拿一个简单的 JSON Object 为例子,为它创建一个 POJO 类。

JSON Object

{
  "id": 1,
  "first_name": "Lothaire",
  "last_name": "Benazet",
  "email": "lbenazet0@tinyurl.com",
  "gender": "Male"
}

Employee POJO

public class Employee {
 
	private Integer id;
	private String first_name;
	private String last_name;
	private String email;
	private String gender;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getFirst_name() {
		return first_name;
	}
	public void setFirst_name(String first_name) {
		this.first_name = first_name;
	}
	public String getLast_name() {
		return last_name;
	}
	public void setLast_name(String last_name) {
		this.last_name = last_name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
}

将一个 Java object 转换成一个 JSON Object 称为序列化 serialization, 反之是反序列化 Deserialization。JsonPath 类提供一个方法 “T getObject(String path, Class objectType)” 获取一个 Object 的 path 的结果作为一个 Java Object。

反序列化

import io.restassured.path.json.JsonPath;
 
public class DeserializationUsingJsonPath {
	
	public static void main(String[] args) {
		
		String jsonObject = "{rn" + 
				"  "id": 1,rn" + 
				"  "first_name": "Lothaire",rn" + 
				"  "last_name": "Benazet",rn" + 
				"  "email": "lbenazet0@tinyurl.com",rn" + 
				"  "gender": "Male"rn" + 
				"}";
		
		JsonPath jsonPath = JsonPath.from(jsonObject);
		
		Employee employee = jsonPath.getObject("", Employee.class);
		System.out.println("Id is         : "+employee.getId());
		System.out.println("First name is : "+employee.getFirst_name());
		System.out.println("Last name is  : "+employee.getLast_name());
		System.out.println("Email id is   : "+employee.getEmail());
		System.out.println("Gender is     : "+employee.getGender());
		
		// Another way
		Employee employee1 = jsonPath.getObject("$", Employee.class);
		System.out.println("Id is         : "+employee1.getId());
		System.out.println("First name is : "+employee1.getFirst_name());
		System.out.println("Last name is  : "+employee1.getLast_name());
		System.out.println("Email id is   : "+employee1.getEmail());
		System.out.println("Gender is     : "+employee1.getGender());
 
	}
 
}

输出:

Id is         : 1
First name is : Lothaire
Last name is  : Benazet
Email id is   : lbenazet0@tinyurl.com
Gender is     : Male
Id is         : 1
First name is : Lothaire
Last name is  : Benazet
Email id is   : lbenazet0@tinyurl.com
Gender is     : Male

JSON Array

上面例子用 “” 和 “ $ ” 作为 JSON path,可以得到一个简单的 JSON Object。如果是如下一个嵌套的 JSON Array,我们需要写一个适当的 JSON Path 来反序列化结果。

[{
  "id": 1,
  "first_name": "Lothaire",
  "last_name": "Benazet",
  "email": "lbenazet0@tinyurl.com",
  "gender": "Male"
}, {
  "id": 2,
  "first_name": "Shellie",
  "last_name": "Cowser",
  "email": "scowser1@163.com",
  "gender": "Female"
}]

如果我们只想反序列化上面 JSON Array 中第二个 JSON Object,实现代码如下:

import io.restassured.path.json.JsonPath;
 
public class DeserializationUsingJsonPath {
	
	public static void main(String[] args) {
		
		String jsonObject = "[{rn" + 
				"  "id": 1,rn" + 
				"  "first_name": "Lothaire",rn" + 
				"  "last_name": "Benazet",rn" + 
				"  "email": "lbenazet0@tinyurl.com",rn" + 
				"  "gender": "Male"rn" + 
				"}, {rn" + 
				"  "id": 2,rn" + 
				"  "first_name": "Shellie",rn" + 
				"  "last_name": "Cowser",rn" + 
				"  "email": "scowser1@163.com",rn" + 
				"  "gender": "Female"rn" + 
				"}]";
		
		JsonPath jsonPath = JsonPath.from(jsonObject);
		
		Employee employee = jsonPath.getObject("[1]", Employee.class);
		System.out.println("Id is         : "+employee.getId());
		System.out.println("First name is : "+employee.getFirst_name());
		System.out.println("Last name is  : "+employee.getLast_name());
		System.out.println("Email id is   : "+employee.getEmail());
		System.out.println("Gender is     : "+employee.getGender());
		
	}
 
}

输出:

Id is         : 2
First name is : Shellie
Last name is  : Cowser
Email id is   : scowser1@163.com
Gender is     : Female
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号