jsonpath读取json数据格式公用方法!!!
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数据格式公用方法!!!的更多相关文章
- js读取json数据(php传值给js)
<?php $array =array('fds','fdsa','fdsafasd'); // json_encode($array); ?> <html> <hea ...
- Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法
前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...
- Android中Json数据读取与创建的方法
转自:http://www.jb51.net/article/70875.htm 首先介绍下JSON的定义,JSON是JavaScript Object Notation的缩写. 一种轻量级的数据交换 ...
- js读取json方法
json也是对象,可以直接使用对象调用 var json = {contry:{area:{man:"12万",women:"10万"}}}; json.con ...
- MVC + EFCore 完整教程19-- 最简方法读取json配置:自定义configuration读取配置文件
问题引出 ASP.NET Core 默认将 Web.config移除了,将配置文件统一放在了 xxx.json 格式的文件中. 有Web.config时,我们需要读到配置文件时,一般是这样的: var ...
- toJSON() 方法,将 Date 对象转换为字符串,并格式化为 JSON 数据格式。
JavaScript toJSON() 方法 定义和用法 toJSON() 方法可以将 Date 对象转换为字符串,并格式化为 JSON 数据格式. JSON 数据用同样的格式就像x ISO-8601 ...
- 使用AFNetWorking读取JSON出现NSCocoaErrorDomain Code=3840的解决方法
最近在使用AFNetworkWorking读取JSON时,出现了NSCocoaErrorDomain Code=3840的错误.这种错误应该是服务器端返回JSON格式不对造成的.通过Google搜到这 ...
- Python读取Json字典写入Excel表格的方法
需求: 因需要将一json文件中大量的信息填入一固定格式的Excel表格,单纯的复制粘贴肯定也能完成,但是想偷懒一下,于是借助Python解决问题. 环境: Windows7 +Python2.7 + ...
- JSON 数据格式
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易 ...
随机推荐
- 最快让你上手ReactiveCocoa之基础篇(简称RAC)
前言 很多blog都说ReactiveCocoa好用,然后各种秀自己如何灵活运用ReactiveCocoa,但是感觉真正缺少的是一篇如何学习ReactiveCocoa的文章,小编看了很多篇都没看出怎么 ...
- 《JAVASCRIPT高级程序设计》window/location/navigator/screen/history对象
如果要在web中使用JAVASCRIPT,那么BOM(浏览器对象模型)毫无疑问是最重要的部分.BOM提供了很多对象,例如,window.location.navigator.screen.histor ...
- 使用express.js框架一步步实现基本应用以及构建可扩展的web应用
最近过年在家有点懈怠,但是自己也不断在学习新的前端技术,在家琢磨了express.js的web框架. 框架的作用就是提高开发效率,快速产出结果.即使不使用框架,我们也会在开发过程中逐渐形成构成框架. ...
- linux 进程间通信 之fifo
上一篇博客已经介绍了一种进程间通信的方式,但是那只是针对于有血缘关系的进程,即父子进程间的通信,那对于没有血缘关系的进程,那要怎么通信呢? 这就要创建一个有名管道,来解决无血缘关系的进程通信, fi ...
- C#剪贴板对文件的复制、粘贴操作
1.把文件加到剪贴板: System.Collections.Specialied.StringCollection files=new System.Collections.Specialied.S ...
- 学习 OpenStack 的方法论 - 每天5分钟玩转 OpenStack(150)
作为 OpenStack 的核心教程,我们已经到了最后总结的部分. OpenStack 目前已经有好几十个模块,本教程讨论的是最最重要的核心模块:Keystone,Nova,Glance,Cinder ...
- linux上安装Oracle 11g R2 标准版 64位
一.Oracle 安装前的准备 检查一下包,必须全部安装: binutils-2.20.51.0.2-5.43.el6.x86_64 compat-libstdc++-296-2.96-144.el6 ...
- C语言一维数组转换为二维数组
一维转二维代码示例: #include <stdio.h> #include <stdlib.h> #define ROW 3 #define COL 2 int main(i ...
- 福利:Axure 8.0 Pro 破解版下载
今天从网上找了好久Axure 8.0 Pro版本 但是都不能用了,于是自己想到了这个办法 1.从官网下单 Axure 8.0 版本 官网地址:https://www.axure.com.cn/3510 ...
- Apache 的安装
1.获取源码包 cd /usr/local/src/ ls wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.25.tar.gz 2.解压.编译. ...