fastjson map转json_Java对象转JSON咋这么头疼?不!那是你还没使用Fastjson

本文介绍了如何使用Fastjson进行Java对象与JSON之间的转换,包括Map转JSON、Java对象转JSON字符串,以及JSON到Java对象的各种方法,详细阐述了每个步骤,适合需要处理JSON数据的开发者参考。
摘要由CSDN通过智能技术生成

前言

测试同学在写测试用例的时候,每个测试用例必须包含预期结果。而对于手工测试而言,执行测试时,预期结果基本上都是人工完成。而对于自动化用例的执行,就要借助于自动化断言,一般是借助于程序实现。以接口测试而言,测试人员往往需要在接口返回的Json串中定位到自己要做断言的value。如果你的自动化测试框架是基于Java语言开发,那么你必然有Java对象与JSON相互转换的经历,如果接口返回的结果多层嵌套,转换起来更是头疼。 本文就是作者将工作中经常使用的fastjson在断言中的一些用法进行总结分享,能帮助大家节省写自动化用例的时间。

介绍

fastjson是阿里的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 当然,Java处理JSON数据有三个比较流行的类库FastJSON、Gson和Jackson,以下是三者的性能对比情况。来源:https://blog.csdn.net/accountwcx/article/details/50252657   8a3346ce60b0e54fc6bba1c851b8d1d7.png  最终选择fastjson主要是其速度快、使用广泛、功能完备且使用比较简单等因素,当然其国产开源软件因素也是之一。

使用方法

1. 官网下载jar包。

https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.53/fastjson-1.2.53.jar

2. pom.xml文件引入maven依赖

com.alibabafastjsonx.x.x

常用方法

// 把字符串parse为JSONObject或者JSONArray 
public static final Object parse(String text);
// 把字符串parse成JSONObject
public static final JSONObject parseObject(String text);
// 把字符串parse为JavaBean
public static final T parseObject(String text, Class clazz);
// 把字符串parse成JSONArray
public static final JSONArray parseArray(String text);
// 把字符串parse成JavaBean集合
public static final List parseArray(String text, Class clazz);
// 将JavaBean序列化为字符串
public static final String toJSONString(Object object);
// 将JavaBean序列化为带格式的字符串
public static final String toJSONString(Object object, boolean prettyFormat);
// 将JavaBean转换为JSONObject或者JSONArray。
public static final Object toJSON(Object javaObject);
// 将日期格式化转换为字符串
public static final String toJSONStringWithDateFormat(Object object,String datefo

实践

定义一个student类:
package JsonDemo;
import lombok.Data;
@Data
public class Student {
Student(){}
Student(String name, Integer age, String phone){
this.name = name;
this.age = age;
this.phone = phone;
}
public String name;
public Integer age;
public String phone;
}

Java对象->Json对象

// 创建一个对象
Student student = new Student("软件质量保障", 30, "18888888888");
// Java对象转JSON对象
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(student);
System.out.println("Java对象转化为JSON对象\n" + jsonObject);
控制台输出
Java对象转化为JSON对象
{"name":"软件质量保障","phone":"18888888888","age":30}

Java对象->Json字符串

// 创建一个对象
Student student = new Student("软件质量保障", 30, "18888888888");
// Java对象转换成JSON字符串
String stuString = JSONObject.toJSONString(student);
System.out.println("Java对象转换成JSON字符串\n" + stuString);
控制台输出
Java对象转换成JSON字符串
{"age":30,"name":"软件质量保障","phone":"18888888888"}

JSON对象->JSON字符串

// 创建一个对象
Student student = new Student("软件质量保障", 30, "18888888888");
// 先转成JSON对象
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(student);
// JSON对象转换为JSON字符串
String jsonString = jsonObject.toJSONString();
System.out.println("JSON对象转换为JSON字符串\n" + jsonString);
控制台输出:
JSON对象转换为JSON字符串
{"name":"软件质量保障","phone":"18888888888","age":30}

JSON对象->Java对象

// 创建一个对象
Student student = new Student("软件质量保障", 30, "18888888888");
//先转成JSON对象
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(student);
//JSON对象转换成Java对象
Student studentObject = JSONObject.toJavaObject(jsonObject, Student.class);
System.out.println("JSON对象转换成Java对象\n" + studentObject);
控制台输出:
JSON对象转换成Java对象
Student(name=软件质量保障, age=30, phone=18888888888)

JSON字符串->JSON对象

String stuString = "{\"age\":2,\"name\":\"软件质量保障\",\"phone\":\"18888888888\"}";
// JSON字符串转换成JSON对象
JSONObject jsonObject1 = JSONObject.parseObject(stuString);
System.out.println("JSON字符串转换成JSON对象\n" + jsonObject1);

// JSON字符串转换成JSON对象

JSONOb

ject jsonObject1 = JSONObject.parseObject(stuString);

System.out.println("JSON字符串转换成JSON对象\n" + jsonObject1);


// JSON字符串转换成JSON对象

JSONOb

j

ect jsonObject1 = JSONObject.parseObject(stuString);

System.out.println("JSON字符串转换成JSON对象\n" + jsonObject1);


控制台输出:
JSON字符串转换成JSON对象
{"phone":"18888888888","name":"软件质量保障","age":2}

JSON字符串->Java对象

String stuString = "{\"age\":2,\"name\":\"软件质量保障\",\"phone\":\"18888888888\"}";
//JSON字符串转换成Java对象
Student student1 = JSONObject.parseObject(stuString, Student.class);
System.out.println("JSON字符串转换成Java对象\n" + student1);
控制台输出:
JSON字符串转换成Java对象
Student(name=软件质量保障, age=2, phone=18888888888)

复杂JSON字符串->JSONObject

String str = "{\"status\":\"success\", \"result\":{\"data\": {\"students\": [{\"age\":2,\"name\":\"软件质量保障\",\"phone\":\"18888888888\"}]}}}";
JSONObject jsonObject = JSON.parseObject(str);
JSONObject data = jsonObject.getJSONObject("result");
JSONObject result = data.getJSONObject("data");
String students = result.getString("students");
System.out.println(students);
控制台输出:
[{"phone":"18888888888","name":"软件质量保障","age":2}]

附录

https://www.runoob.com/w3cnote/fastjson-intro.html https://repo1.maven.org/maven2/com/alibaba/fastjson
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值