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. SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)

    由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...

  2. 在GEM5模拟器运行时,对Kill命令的使用

    在Linux下开发执行GEM5程序时,需要先启动GEM5,然后使用telnet对GEM5进行连接,才能看到串口信息.因为操作步骤多,所以写了脚本用来运行GEM5和Telnet程序,并且对两个程序进行监 ...

  3. 正则表达式之一:TSQL注释的查找

    最近自己做了个小项目,涉及到了大量的正则表达式匹配和处理,在这里也和大家分享一下. 我相信接触过SQL Server数据库的很多朋友都知道,它是以"--"开头来进行注释的,但你觉得 ...

  4. WinForm 制作一个简单的计算器

    namespace WindowsFormsApplication6 { public partial class Form1 : Form { //存储上次点击了什么按钮,0代表什么都没有点击,1代 ...

  5. OVS vxlan 底层结构分析 - 每天5分钟玩转 OpenStack(148)

    上一节创建了 vxlan100_net 并部署 instance,今天我们来分析底层网络结构. 控制节点 执行 ovs-vsctl show: br-int br-int 连接了如下 port: ta ...

  6. SQLSERVER 运维日记-数据库状态

    背景 新年伊始,小伙伴是不是还处于假期综合症的状态.我们在日常运维数据库的时候,会时常查看数据库的状态,检查数据库是否正常运行.对于这些状态的熟悉对于我们处理数据库无法访问的 问题非常重要.当数据库突 ...

  7. (2)java程序走一遍工作流activiti

    工作流从流程定义到创建一个流程实例完成执行步骤 使用activi-designer创建一个流程定义(.bpmn结尾的文件) 将定义好的流程定义和生成的png图片通过RepositoryService( ...

  8. My97DatePicker.js 之无效日期设置

    1.下载并引用My97DatePicker.js 2.将工作日休假的和周末上班的维护到数据库中 3.取出某段时间内的不上班日期集合 /// <summary> ///获取 无效日期集合 1 ...

  9. 【问题解决】使用自定义控件时,vs停止工作

    问题表现:向页面中添加自定义控件时,vs卡住了,随便点击一下,然后窗口未响应,然后用资源管理器看到内存使用在飙升,监视进程会发现就是vs的进程出现了异常 问题的解决:菜鸟D在网上搜了一下,发现一个奇葩 ...

  10. esri-leaflet入门教程(5)- 动态要素加载

    esri-leaflet入门教程(5)- 动态要素加载 by 李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGIS Server提供的各种服务,这些都是服务本身来决定的,API脚 ...