一个简单的json返回列表:
[{"name": "青岛联通通信有限公司","pId": "0","id": "2f6cde14f1584e398e3dc12b9deb1553"},{"name": "深圳市新源润产品信息技术有限公司","pId": "0","id": "302fcfabc4a24ea194c973f46c66b5e9"},{"name": "深圳市康凯斯科技有限公司","pId": "0","id": "00c1546b99ca44a9b9385b70879d81d4"},{"name": "DGV25供应商","pId": "0","id": "91eae527fb134d24899cbb2d6b255fdd"},(...此处省略N个列表...){"name": "南京保单供应商","pId": "0","id": "6327be8b748b4d92b2e2fdc319debb9e"}
]
$..name 列出所有name的列表
$.[0].name 提取数组中第一个list下的name的值 因为数组没有字段名所以直接写了 [0],如果有字段名可以在前面加上
比如 $.Province[0].name
$..[?(@.name=='DGV25供应商')] 筛选出name名为“DGV25”的所有list数据
$.[:2] 筛选前两条数据
举例子,注意:
$.Province[:2].population 是筛选出前两条数据 ;
$.Province[2].population 是排除前两条数据;
$.Province[-2].population是排除后两条数据,
重点来了=========================重点来了
多层嵌套的jsonlist,需要提取所有列表下,name=“DGV25供应商”时的 id 和 pId 数据
如果按照传统的正则表达式提取,很难满足需求了
因此需要用到jsonpath表达式:
$..[?(@.name=='DGV25供应商')].["id","pId"]