首页 > Web开发 > 详细

JSONPath解析json

时间:2019-10-29 19:28:15      阅读:96      评论:0      收藏:0      [点我收藏+]
  • 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.2},{\"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].title=高效Java;$.store.book[1].price=12.2";
        String[] data = params.split(";");
//遍历数组,获取每一个检查点在json中对应的数据 Map<String,Object> map = new HashMap<>(); for (int i=0;i<data.length;i++){ //System.out.println(data[i]); map.put(data[i].split("=")[0],data[i].split("=")[1]); System.out.println("返回数据JSONPath:"+JSONPath.read(json,data[i].split("=")[0])); System.out.println("断言数据JSONPath:"+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"); }else { System.out.println("Fail A"); } }else { // Object转String if ((JSONPath.read(json,data[i].split("=")[0]).toString()).equals((map.get(data[i].split("=")[0])))){ System.out.println("Pass B"); }else { System.out.println("Fail B"); } } } } }

 技术分享图片

 

JSONPath解析json

原文:https://www.cnblogs.com/wakey/p/11760471.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!