zoukankan      html  css  js  c++  java
  • JSONPath解析json

    • JSONPath - 用于JSON的XPath

    • 用来解析多层嵌套的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("【测试执行结果:失败】");
            }
        }
    }

  • 相关阅读:
    【原创游戏】合金弹头S——Unity制作的同人游戏
    【原创游戏】Extreme Ball——虐心小游戏
    【原创游戏】迷踪失路——恐怖风格的第一人称迷宫游戏
    生成二维码工具类及使用
    使用base64对图片的加密解密
    将图片转换成二进制, (用到 输入流,输出流)
    图片的缩放(放大缩小)
    逻辑推理
    应该在别人恐惧时贪婪吗?
    SQL 2005数据类型说明
  • 原文地址:https://www.cnblogs.com/wakey/p/11760471.html
Copyright © 2011-2022 走看看