美文网首页
JSONPath解析json

JSONPath解析json

作者: wakey | 来源:发表于2019-12-04 17:08 被阅读0次

JSONPath 用来解析多层嵌套的json数据,JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具。在接口测试中会设置多个检查点,可以使用JSONPath来做检查点的校验。

import com.alibaba.fastjson.JSONPath;
import java.util.HashMap;
import java.util.Map;

public class JSONPathDemo {

    public static void main(String[] args) {

        String json = "{\"store\":{\"book\":[{\"title\":\"高效Java\",\"price\":10.2},{\"title\":\"设计模式\",\"price\":12.21},{\"title\":\"重构\",\"isbn\":\"553\",\"price\":8},{\"title\":\"虚拟机\",\"isbn\":\"395\",\"price\":22}],\"bicycle\":{\"color\":\"red\",\"price\":19}}}";
        //String expression1  = (String) JSONPath.read(json,"$.store.book[0].title");
        //int expression2 = (int) JSONPath.read(json,"$.store.book[0].price");

        // 设置的检查点,多个检查点用;分隔
        String params = "$.store.book[0].price=10.2;$.store.book[1].title=设计模式";
        String[] data = params.split(";");
        // 定义测试结果的标记
        Boolean flag = false;

        //遍历数组,获取每一个检查点在json中对应的数据,存在map中
        Map<String, Object> map = new HashMap<>();
        for (int i = 0; i < data.length; i++) {
            map.put(data[i].split("=")[0], data[i].split("=")[1]);
            System.out.println("检查点"+ (i+1) +"返回的数据:" + JSONPath.read(json, data[i].split("=")[0]));
            System.out.println("检查点"+ (i+1) +"断言的数据:" + map.get(data[i].split("=")[0]));

            //判断检查点数据与返回的json数据是否一致
            if (JSONPath.read(json, data[i].split("=")[0]) instanceof String) {
                if (JSONPath.read(json, data[i].split("=")[0]).equals(map.get(data[i].split("=")[0]))) {
                    //System.out.println("Pass A");
                    flag = true;
                } else {
                    //System.out.println("Fail A");
                    flag = false;
                    break;
                }
            } else { // Object转String
                if ((JSONPath.read(json, data[i].split("=")[0]).toString()).equals((map.get(data[i].split("=")[0])))) {
                    //System.out.println("Pass B");
                    flag = true;
                } else {
                    //System.out.println("Fail B");
                    flag = false;
                    break;
                }
            }
        }
        if (flag) {
            System.out.println("【测试执行结果:通过】");
        } else {
            System.out.println("【测试执行结果:失败】");
        }
    }
}

运行结果:


image.png

相关文章

  • JSONPath解析json

    JSONPath 用来解析多层嵌套的json数据,JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定...

  • JSONPath入门及测试

    JSONPath入门 JSONPath - 是xpath在json的应用,是参照xpath表达式来解析XML文档的...

  • 07-数据提取-jsonpath

    jsonpath用来解析多层嵌套的json数据jsonpath官方文档 安装 语法 使用 字典的根节点为最外部大括...

  • jsonpath模块01

    JSONPath 表达式 JSONPath 是参照,xpath表达式来解析xml文档的方式,json数据结构通常是...

  • jsonpath解析

    2019-06-03 jsonpath用来解析json数据使用的 python处理json格式用到的函数 impo...

  • python中jsonpath模块

    简介jsonpath表达式与xPath表达式类似,jsonpath是一种信息抽取类库,提供的json解析非常强大,...

  • jsonpath 2022-01-16

    jsonpath是用于解析json文件的强大工具,不同语言都有各自的实现 jsonpath的设计思想和正则表达式相...

  • JsonPath解析Json数据

    JsonPath to JSON is what XPATH is to XML, a simple way to...

  • json解析工具jsonpath

    JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内...

  • 使用jsonpath解析json

    使用jsonpath,可以大大减少开发量。 为了能像写XPath一样写json路径,Stefan Goessner...

网友评论

      本文标题:JSONPath解析json

      本文链接:https://www.haomeiwen.com/subject/hzplgctx.html