前言

测试同学在写测试用例的时候,每个测试用例必须包含预期结果。而对于手工测试而言,执行测试时,预期结果基本上都是人工完成。而对于自动化用例的执行,就要借助于自动化断言,一般是借助于程序实现。以接口测试而言,测试人员往往需要在接口返回的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 最终选择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;@Datapublic 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.htmlhttps://repo1.maven.org/maven2/com/alibaba/fastjson

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

  1. java fastjson vector转为json_java对象与Json字符串之间的转化(fastjson)

    public class test { public static void main(string[] args) { // 实现java对象与json字符串之间的转化 // 1. person对象 ...

  2. 转json_Java对象转JSON时如何动态的增删改查属性

    1. 前言 日常开发中少不了 JSON 处理,少不了需要在 JSON 中添加额外字段或者删除特定字段的需求.今天我们就使用Jackson类库来实现这个功能. 2. JSON 字符串增加额外字段 假如我 ...

  3. FastJson、Jackson、Gson进行Java对象转换Json的细节处理

    前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...

  4. 对象 和 json 互转 四种方式 json-lib、Gson、FastJson、Jackson

    文章目录 一. json-lib 二. Google的Gson 1.简介 2. 配置步骤 1. MAVEN 依赖引入 2. gsonUtil 工具类 3. 排除不要序列化的熟悉注解类 Exclude ...

  5. gson转对象变成null_FastJson、Jackson、Gson进行Java对象转换Json的细节处理

    转 https://blog.csdn.net/moneyshi/article/details/51830329 Java对象转换Json的细节处理 前言 Java对象在转json的时候,如果对象里 ...

  6. jsp 将java对象转json对象 (自定义EL函数)

    功能:在 jsp 页面将 java对象 转换为 json对象 (使用自定义EL函数实现) 步骤: 1. 创建 JSP EL 工具类 2. 创建 tld 文件 3. 配置 web.xml 文件 4. 完 ...

  7. java对象与Json字符串之间的转化(fastjson)

    1. 首先引入jar包 在pom.xml文件里加入下面依赖: <dependency><groupId>com.alibaba</groupId><artif ...

  8. Java中普通字符串转json_java普通对象和json字符串的互转

    一.java普通对象和json字符串的互转 java对象---->json 首先创建一个java对象: 现在java对象转换为json形式: 定义了一个Student的实体类,然后分别使用了JS ...

  9. Java基础/利用fastjson序列化对象为JSON

    利用fastjson序列化对象为JSON 参考博客:http://blog.csdn.net/zeuskingzb/article/details/17468079 Step1:定义实体类 //用户类 ...

最新文章

  1. 小端字节序与大端字节序
  2. 阿里云智能编码idea插件:Alibaba Cloud AI Coding Assistant
  3. 46 SD配置-销售凭证设置-分配状态参数文件到项目类型
  4. 关系网络实战|设备关联信息定位团伙欺诈
  5. 医院叫号排队系统 php,医院排队叫号系统软件介绍
  6. C语言程序设计,流程图
  7. Samba使用大全(转
  8. android红米升级失败怎么办,红米刷机失败怎么办?解决红米刷机失败教程
  9. 如何做好客户需求分析
  10. 【Turtle合集】提前祝大家圣诞快乐,我为大家献歌一首,叮叮当,叮叮当,穷的响叮当——快开门,我送礼物来了哟~(圣诞树代码)
  11. 晒往期云栖大会的照片或感想_赢2017杭州云栖大会门票
  12. python编程作业
  13. Unity开发时遇到的各种需要注意的地方
  14. 本科项目——51单片机多功能万年历
  15. 简单的基于规则的汉语拼音分词
  16. JSP编译指令-page
  17. 网络流:最大流,最小割 基本概念及算法
  18. 关于C语言的优秀文章
  19. VM-虚拟机装苹果系统
  20. 【主成分分析】PCA降维算法及Matlab代码实现

热门文章

  1. 本体学习的概念及目标
  2. CSS fixed 定位元素失效的问题
  3. 670. Maximum Swap 允许交换一个数 求最大值
  4. linux shell 基本规范
  5. 卡片选项页面 JTabbedPane 的使用
  6. apache开源项目--HttpComponents
  7. iOS成长之button
  8. postfix所谓的监控功能只是利用sender_bcc而已
  9. C#日期函数所有样式大全
  10. 解决CentOS java环境不生效的问题