import java.util.LinkedHashMap;

import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.Predicate; import net.minidev.json.JSONArray;
public class Test { public static void main(String[] args) {
String jsonString = "{a:\"nnnnn\",b:{c:4441,d:dadwadw},e:[f:11,g:22],h:[],i:\"\"}";
String JsonPath,result,name,tmp;
int n,m,l,p; //jsonString = prev.getResponseDataAsString();
//log.info("======:"+jsonString);
m=4; JsonPath= "$.data["+m+"].gItems.length()";
result =Test.readjson(jsonString,JsonPath);
log.info("======================:"+result);
l = Integer.parseInt(result);
n = 0;
for (int i=0;i<le;i++){
JsonPath= "$.data["+n1+"].gItems["+i+"]";
n=i+1;
name = "mId_1_"+n;
vars.put(name,mId);
tmp = vars.get(name);
log.info("======================:"+tmp); } System.out.println(resultString);
} public static String readjson(String json, String jsonPath) { try
{
Object value = JsonPath.read(json, jsonPath, new Predicate[0]); if (value instanceof Integer)
{
return value.toString();
}else if (value instanceof String)
{
return value.toString();
}else if (value instanceof Boolean)
{
return value.toString();
}else if (value instanceof JSONArray)
{
JSONArray arr = (JSONArray)value;
if(!arr.isEmpty()){return arr.toJSONString();} return "";
}else if (value instanceof LinkedHashMap)
{
return value.toString();
}else if (value instanceof float)
{
return value.toString();
}else{
return value.toString();
}
}
catch(Exception e){
return "pathnotfound";
} } } 以上就是jsonpath读取使用方法。具体实例如下一行jmeter自动化接口代码
source("D:\\资料\\Apiauto\\jmeter-3.0\\lib\\java\\Test.java");

// Test.java就是上面jsonpath读取数据使用方法

public static void exectFun(){
String rep,jsonPath,jsonPath1,result,result1,tmp;
//获取频道页第一屏返回包
rep = prev.getResponseDataAsString();
// log.info("频道页第一屏返回包:"+rep);
//获取contents
JsonPath= "$.data.hotDestinations.contents.length()";
result =Test.readjson(rep,JsonPath);
// log.info("获取contents:"+result);
vars.put("contents_length",result);
tmp=vars.get("contents_length");
// log.info("获取变量:"+tmp);
int lo = Integer.parseInt(result);
//-1的目的去掉搜索更多
int l = lo-1;
// log.info("检查l为多少:"+l);
for(int i=0;i<l;i++){
// 获取每个imageUrl
jsonPath = "$.data.hotDestinations.contents["+i+"].title";
// log.info("jsonPath:"+jsonPath);
result =Test.readjson(rep,jsonPath);
vars.put("title",result);
// log.info("获取title:"+result);
jsonPath1 = "$.data.hotDestinations.contents["+i+"].appUrl";
// log.info("jsonPath:"+jsonPath);
result1 =Test.readjson(rep,jsonPath1);
vars.put("appUrl",result1);
}
}

  因此:大家可以根据jsonpath提供读取key的方法,来获取各个节点下的key对应的value值!!!

尤其对与list来讲,jsonpath可以算出长度,来进行循环读取,对于不固定长度的list提供了真正意义上的脚本自动化,难道不是吗~

jsonpath支持多种读取方式,方便快捷~利用jmeter的自身携带的断言语句

Failure = true;
FailureMessage = "title或appurl数据为空";

Failure = false
FailureMessage = "本次请求成功";  

等完成

举例:

if(checkFlag(flag,tip)==true){
Failure= false;
FailureMessage = "在有优惠券的情况下flag满足于tip对应关系正确,flag值为"+flag+",tip值为"+tip;
}else{
Failure= true;
FailureMessage = "在有优惠券的情况下flag满足于tip对应关系不正确,flag值为"+flag+",tip值为"+tip;
}

建议,在判断某个key为null或者""空时建议加一个try catch

对于jmeter如何输出自动化接口脚本,可以加我或者评论 详细给予解答

!!!!!!!!!!!!!!!!!!!!!1
貌似话已说多~没办法~一旦涉及到自动化,我浑身充满了洪荒之力~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·

jsonpath读取json数据格式公用方法!!!的更多相关文章

  1. js读取json数据(php传值给js)

    <?php $array =array('fds','fdsa','fdsafasd');  // json_encode($array); ?> <html> <hea ...

  2. Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法

    前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...

  3. Android中Json数据读取与创建的方法

    转自:http://www.jb51.net/article/70875.htm 首先介绍下JSON的定义,JSON是JavaScript Object Notation的缩写. 一种轻量级的数据交换 ...

  4. js读取json方法

    json也是对象,可以直接使用对象调用 var json = {contry:{area:{man:"12万",women:"10万"}}}; json.con ...

  5. MVC + EFCore 完整教程19-- 最简方法读取json配置:自定义configuration读取配置文件

    问题引出 ASP.NET Core 默认将 Web.config移除了,将配置文件统一放在了 xxx.json 格式的文件中. 有Web.config时,我们需要读到配置文件时,一般是这样的: var ...

  6. toJSON() 方法,将 Date 对象转换为字符串,并格式化为 JSON 数据格式。

    JavaScript toJSON() 方法 定义和用法 toJSON() 方法可以将 Date 对象转换为字符串,并格式化为 JSON 数据格式. JSON 数据用同样的格式就像x ISO-8601 ...

  7. 使用AFNetWorking读取JSON出现NSCocoaErrorDomain Code=3840的解决方法

    最近在使用AFNetworkWorking读取JSON时,出现了NSCocoaErrorDomain Code=3840的错误.这种错误应该是服务器端返回JSON格式不对造成的.通过Google搜到这 ...

  8. Python读取Json字典写入Excel表格的方法

    需求: 因需要将一json文件中大量的信息填入一固定格式的Excel表格,单纯的复制粘贴肯定也能完成,但是想偷懒一下,于是借助Python解决问题. 环境: Windows7 +Python2.7 + ...

  9. JSON 数据格式

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易 ...

随机推荐

  1. Spring生命周期各种接口使用

    1,BeanPostProcessor接口:不能在POJO上面使用,需要单独找一个类进行使用:如果在POJO上面实现了此接口,在实现了其他*Aware接口之后,这个接口方法将不会被调用:2, POJO ...

  2. webpack+react+redux+es6开发模式---续

    一.前言 之前介绍了webpack+react+redux+es6开发模式 ,这个项目对于一个独立的功能节点来说是没有问题的.假如伴随着源源不断的需求,前段项目会涌现出更多的功能节点,需要独立部署运行 ...

  3. 005.数组、for、foreach

    1.方法的传输传递 值参数:传递的是副本 引用参数:自身 保留自定义的方法中对值的改变 形参影响实参ref:对应的形参和实参都用ref修饰 输出参数:实参不用赋值,但是自定义方法内必须对此参数赋值!! ...

  4. ArcGIS 网络分析[1] 介绍与博文目录【更新中】

    网络分析是个热点,理论上是属于计算机图形学和数据结构的,GIS以此为基础做出应用. 以下列举本人在学习中遇到的网络分析问题与经验总结. 平台:Windows 10操作系统,ArcGIS for Des ...

  5. Apache Arrow 内存数据

    1.概述 Apache Arrow 是 Apache 基金会全新孵化的一个顶级项目.它设计的目的在于作为一个跨平台的数据层,来加快大数据分析项目的运行速度. 2.内容 现在大数据处理模型很多,用户在应 ...

  6. 《JAVASCRIPT高级程序设计》DOM扩展

    虽然DOM为XML及HTML文档交互制定了一系列的API,但仍然有几个规范对标准的DOM进行了扩展.这些扩展中,有很多是浏览器专有的,但后来成了事实标准,于是其他浏览器也提供了相同的实现:浏览器开发商 ...

  7. 在点击div中的p时,如何阻止事件冒泡?

    今天整理笔记,发现在学习javaScript的过程中,遇到过一个在当时看来很棘手的问题,现在特地总结一下,也希望能帮助到曾像我一样迷惘的初学者. 我还是以一个案例来说明问题,html代码如下: < ...

  8. 龙珠超的新OP【限界突破×サバイバー】

    这首歌真的很燃 下载>>   限界突破×サバイバー 中文歌词 演唱:冰川清志 兴奋了!就去宇宙吧 最先端的“着迷”怎么样! 握在手中 突然想要大笑 糊里糊涂也习惯了吗! I can't g ...

  9. 微端启动器LAUNCHER的制作之MFC版二(下载)

    用了C#再回来用C++写真的有一种我已经不属于这个世界的感觉.C++的下载就没有C#那么方便了,我用的是libcurl.dll,官网上下载的源码自己cmake出来编译的,c++的库引用有debug和r ...

  10. 真机测试错误“The application could not be verified”

    真机测试错误"The application could not be verified" 真机测试的时候报错:"The application could not be ...