JsonPath如何使用
JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具
语法:
$ :根节点 @:现行节点 . 或者[ ] :取子节点 ..:不管位置,选择节点 *:匹配所有节点 [ ]:内部可以填上索引值、键名,
常用表达式:
示例:
In[1]: from jsonpath import jsonpath #导入 In[2]: bro_infos = { ...: "browsers":{ ...: "chrome":["chrome1","chrome2","chrome3","chrome4"], ...: "opera":["opera1","opera2","opera3","opera4"], ...: "firefox":["firefox1","firefox2","firefox3","firefox4",], ...: } In[3]: jsonpath(bro_infos,'$..chrome') #选择所有chrome节点的值 Out[3]: [['chrome1', 'chrome2', 'chrome3', 'chrome4']] In[4]: jsonpath(bro_infos,'$..chrome[0,2]') #选择chrome节点第1和第3个元素 Out[4]: ['chrome1', 'chrome3'] In[5]: jsonpath(bro_infos,'$.browsers.*[2]') #选择browsers所有子节点的第3个元素 Out[5]: ['chrome3', 'opera3', 'firefox3'] In[6]: jsonpath(bro_infos,'$..[chrome,firefox]') #选择chrome节点和firefox节点 Out[6]: [['chrome1', 'chrome2', 'chrome3', 'chrome4'], ['firefox1', 'firefox2', 'firefox3', 'firefox4']] In[7]: jsonpath(bro_infos,'$..[browsers,firefox]') #[ ]中选择的内容可以跨层级 Out[7]: [{'chrome': ['chrome1', 'chrome2', 'chrome3', 'chrome4'], 'opera': ['opera1', 'opera2', 'opera3', 'opera4'], 'firefox': ['firefox1', 'firefox2', 'firefox3', 'firefox4']}, ['firefox1', 'firefox2', 'firefox3', 'firefox4']] In[8]: jsonpath(bro_infos,'$.browsers.*') #选择browsers下面所有子节点的值 Out[8]: [['chrome1', 'chrome2', 'chrome3', 'chrome4'], ['opera1', 'opera2', 'opera3', 'opera4'], ['firefox1', 'firefox2', 'firefox3', 'firefox4']]
jsonpath提取的结果是一个列表,bro_infos在这里以字典进行演示的,相当于json.loads(json字符串)