大家帮我解析一个JSON字符串,K 和V 都需要获取 变成数组或对象都可以

大家帮我解析一个JSON字符串,K 和V 都需要获取 变成数组或对象都可以,第1张

使用jmeter做接口测试时,经常会要获取json文件中数组中某个相同节点的值。如下述json文件

想要获取claimLabors节点下claimEstimateItemName="前保险杠骨架"且operationType= "03"的partNo。

分析:

1、jmeter中要想获取到claimLabors节点下claimEstimateItemName="前保险杠骨架"且operationType= "03"的partNo值,必须要解析该json文件。所以需要在beanshell中使用第三方jar包,则先要在idea中新建工程jmeterTool

2、在idea中新建工程jmeterTool,并新增类:JsonUtil

这里提供两种方法获取partNo的值。

方法一:通过jsonpath获取partNo的值。

方法getJsonVal得到一个list返回值,因为是某一个具体的值,所以直接使用substring截取[]内的内容即可。

方法二:通过jsonpath获取partNo所属数组的整个节点,再通过map获取partNo的值。

方法getJsonNode得到一个list<Map>对象,因为是list里只有一个对象,所以使用listget(0)获取到map,再通过mapget("任意字段名称")即可获取对应的值。

上述main方法中的测试,是为了方便后续打jar包。

这里解析json,用到json-path包,所以在工程中需要导入该包:

3、将上述工程打成jar包。

打完包后,进入到包所在的路径下,结构如下:

如果不是上述内容,需要修改一下(将工程的META-INF目录下MANIFESTMF文件中的内容复制过来即可)。否则cmd测试时会提示:没有主清单

4、将打的包放到jmeter安装目录的lib\ext文件夹下

5、打开jmeter,在对应脚本的beanshell中引入该包中的JsonUtil类并调用

ok了。

先把获取的内容打印出来 ,看看是不是正常返回的数据

$filename = "http://whoispconlinecomcn/ipJsonjspjson=true";

$content = file_get_contents($filename);

$json = @json_decode($content );

if($json){

    $city=$json->city;

}else{

    echo "json解析失败:"$content;

}

也可以根据你的框架功能,写成日志,方便出错时随时检查 

另外 ,json_decode 可以接收一个参数来确定解析成对象还是数组

$content = '{"ip":"120239177231","pro":"广东省","proCode":"440000","city":"中山市","cityCode":"442000","region":"","regionCode":"0","addr":"广东省中山市 移通","regionNames":"","err":""}';

$json = json_decode($content,true);

echo $json['city'];

参考文档:PHP json_decode

如果有JSON就用JSON,否则退一步用eval

代码如下:

var txt='[{"张三":"1372321146","李四":"133560637","王五":"13567263"}]';

var obj=windowJSONJSONparse(txt):eval(["(",txt,")"]join(""));

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 大家帮我解析一个JSON字符串,K 和V 都需要获取 变成数组或对象都可以

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情