ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
jsonpath作为json模块的补充,jsonpath相比于json在对于拥有很多的嵌套的json数据时,使用起来更方便和简洁。使用结构如下: ```python from jsonpath import jsonpath json_data = jsonpath(obj, 'jsonpath语法') ``` jsonpath的语法如下: ```python $ 提取根节点 @ 提取现行节点 . 提取子节点 [] 取子节点 [] 迭代器标示,可以在括号做简单的迭代操作,如数组下标,根据内容选择等 n/a 提取父节点,jsonpath未支持 n/a 根据属性访问,json不支持 n/a 分组,jsonpath不支持 .. 不管位置,选择所有符合条件的节点 * 匹配所有元素节点 [,] 支持迭代器中做多选 ?() 支持过滤操作 () 支持表达式计算 语法很多,但是只要会使用下面三种语法就够用了: $ 提取根节点 . 提取子节点 .. 不管位置,选择所有符合条件的节点 ``` <br/> 举例: (1)json数据格式如下,这里只列出了一小部分 ```json { "state":1, "message":"success", "content":{ "data":{ "allCitySearchLabels":{ "A":[ { "id":723, "name":"安阳", "parentId":545, "code":"171500000", "isSelected":false }, { "id":601, "name":"鞍山", "parentId":535, "code":"081600000", "isSelected":false }, ``` (2)代码 ```python """ @Date 2021/4/24 """ from jsonpath import jsonpath import requests import json headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36' } response = requests.get('https://www.lagou.com/lbs/getAllCitySearchLabels.json', headers=headers) dict_data = json.loads(response.content) # <class 'dict'> print(type(dict_data)) # 提取以A字母开头的城市 a_city = jsonpath(dict_data, '$..A..name') # <class 'list'> print(type(a_city)) # ['安阳', '鞍山', '安庆', '安顺', '安康', '澳门', '阿克苏', '阿坝藏族羌族自治州', '阿里地区', '阿勒泰', '阿拉善盟'] print(a_city) # 提取所有的城市 all_city = jsonpath(dict_data, '$..name') # <class 'list'> print(type(all_city)) # ['安阳', '鞍山', '安庆', '安顺', '安康', '澳门', '阿克苏', '阿坝藏族羌族自治州', '阿里地区', '阿勒泰',...] print(all_city) ```