一、背景
jsonpath 在处理 json 格式的数据方面是无敌的存在,前边我也篇关于 jsonpath 介绍的文章 Json 数据提取神器 jsonpath ,今天介绍 jsonpath 在 Postman 脚本中的应用
二、准备JSONPath脚本
Postman 的脚本是 JavaScript 语言,因此需要准备JS版本的JSONPath
1. JSONPath 源码
说明:
- Github官网提供的JS语言的 JSONPath 版本 >= v0.12.0
- npm 官网提供的 package 如下:
JSONPath npm package(v0.8.0~v0.11.2)
jsonpath-plus npm package(>= v0.12.0)
npm安装指定版本的JSONPath
npm i JSONPath@0.8.0
如果没有nodejs环境,访问下列地址下载源码到本地
js版本的 jsonpath package下载 (v0.8.0)
源码在JSONPath包的 lib/jsonpath.js
jsonpath.js源码:
/* JSONPath 0.8.0 - XPath for JSON
*
* Copyright (c) 2007 Stefan Goessner (goessner.net)
* Licensed under the MIT (MIT-LICENSE.txt) licence.
*/
function jsonPath(obj, expr, arg) {
var P = {
resultType: arg && arg.resultType || "VALUE",
result: [],
normalize: function(expr) {
var subx = [];
return expr.replace(/[\['](\??\(.*?\))[\]']/g, function($0,$1){
return "[#"+(subx.push($1)-1)+"]";})
.replace(/'?\.'?|\['?/g, ";")
.replace(/;;;|;;/g, ";..;")
.replace(/;$|'?\]|'$/g, "")
.replace(/#([0-9]+)/g, function($0,$1){
return subx[$1];});
},
asPath: function(path) {
var x = path.split(";"), p = "$";
for (var i=1,n=x.length; i<n; i++)
p += /^[0-9*]+$/.test(x[i]) ? ("["