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. bootstrap 表单控件 控件状态 控件大小 help-block

    bootstrap 表单控件 控件状态 控件大小 help-block <!DOCTYPE html> <html lang="en"> <head& ...

  2. doubango地址配置

    转自:http://wiki.sip2sip.info/projects/sip2sip/wiki/SipDeviceConfiguration SIP Device Configuration Th ...

  3. LoadRunner面试题

    在LoadRunner中为什么要设置思考时间和pacing 答: 录制时记录的是客户端和服务端的交互,如果要精确模拟 用户的行为,那么客户操作客户端时花费了很多时间要怎么模拟呢?录入 填写提交的内容, ...

  4. C++ 头文件系列(forward_list)

    简介 forwrad_list字面意思为前向列表,但实际上它是一种单向列表,只能从单一方向遍历. 单向链表实现 forward_list内部是用单向列表实现的,并且设计该库的时候就是以近乎手写的单向链 ...

  5. Xamarin 小试牛刀 通知栏消息通知和按钮(基于Java代码人肉转换)

    本示例基于网友现有安卓项目人肉翻译,在Xamarin中替换和修改了很多方法的命名,比如某些属性需要去掉getName的get前缀, 有些方法名称需要使用Pascal命名法替换Java的Camel 命名 ...

  6. 02月刊(上) | 微信小程序

    * { margin: 0; padding: 0 } .con { width: 802px; margin: 0 auto; text-align: center; position: inher ...

  7. jquery 高级 学习笔记

    --jquery 和 原生js可以共存,但不能混用.jquery 可以通过get()方法 转换为原生js. $("#div1").get(0).innerHTML; get() 需 ...

  8. 使用python制作ArcGIS插件(3)ArcPy的使用说明

    使用python制作ArcGIS插件(3)ArcPy的使用说明 by 李远祥 ArcPy 是一个以成功的 arcgisscripting 模块为基础并继承了 arcgisscripting 功能进而构 ...

  9. matlab 子函数的使用

    本文参考了该篇博客:http://www.cnblogs.com/MarshallL/p/4048846.html 对其进行学习,为我所用吧. 一. 在matlab的函数定义中,如果函数如果函数较长或 ...

  10. handlebars使用总结

    对自己使用handlebars做一个小总结,以后忘记了,好有地方看一下,不会用的小伙伴也可以借鉴一下,写的不好. 使用 Handlebars的安装是比较简单和方便的;handlebars是一个纯JS库 ...