美文网首页
使用jsonpath解析json

使用jsonpath解析json

作者: SeanCheney | 来源:发表于2019-04-16 19:17 被阅读0次

使用jsonpath,可以大大减少开发量。

为了能像写XPath一样写json路径,Stefan Goessner开发了jsonpath(https://goessner.net/articles/JsonPath/)。

jsonpath也有Python实现(https://github.com/kennknowles/python-jsonpath-rw)。

安装方式:pip install jsonpath-rw

简单使用:

from jsonpath_rw import jsonpath, parse

jsonpath_expr = parse('foo[*].baz')
print(jsonpath_expr)

print([match.value for match in jsonpath_expr.find({'foo': [{'baz': 1}, {'baz': 2}]})])

print([str(match.full_path) for match in jsonpath_expr.find({'foo': [{'baz': 1}, {'baz': 2}]})])

jsonpath.auto_id_field = 'id'
print([match.value for match in parse('foo[*].id').find({'foo': [{'id': 'bizzle'}, {'baz': 3}]})])

print([match.value for match in parse('a.*.b.`parent`.c').find({'a': {'x': {'b': 1, 'c': 'number one'}, 'y': {'b': 2, 'c': 'number two'}}})])

另一个例子,获取所有author字段:

dict = { "store": {
    "book": [
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      { "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      { "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

from jsonpath_rw import parse

jsonpath_expr = parse('$..author')

res = jsonpath_expr.find(dict)

print([match.value for match in res])

对36氪的快讯接口解析,只要知道最终要取的字段名就好,不用写完整的字典取值,可以省不少事:

import requests
import json
from jsonpath_rw import parse


header = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 '
                      '(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
    }

url = 'https://36kr.com/api/newsflash?&per_page=20'
response = requests.get(url,
                        headers=header,
                        timeout=5
                        )

dict = json.loads(response.text)

jsonpath_expr = parse('$..title, description, published_at')

res = jsonpath_expr.find(dict)

print([match.value for match in res])

jsonpath的详细语法可参考:
https://github.com/kennknowles/python-jsonpath-rw

相关文章

  • 07-数据提取-jsonpath

    jsonpath用来解析多层嵌套的json数据jsonpath官方文档 安装 语法 使用 字典的根节点为最外部大括...

  • jsonpath解析

    2019-06-03 jsonpath用来解析json数据使用的 python处理json格式用到的函数 impo...

  • 使用jsonpath解析json

    使用jsonpath,可以大大减少开发量。 为了能像写XPath一样写json路径,Stefan Goessner...

  • JSONPath解析json

    JSONPath 用来解析多层嵌套的json数据,JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定...

  • JSONPath入门及测试

    JSONPath入门 JSONPath - 是xpath在json的应用,是参照xpath表达式来解析XML文档的...

  • Python 使用 jsonpath 解析 json

    jsonpath 通过通用的表达式可以获取json中指定的值。Python中jsonpath的使用1、使用json...

  • jsonpath模块01

    JSONPath 表达式 JSONPath 是参照,xpath表达式来解析xml文档的方式,json数据结构通常是...

  • JSONPath 表达式的使用

    一、JSONPath使用需要的包 二、使用说明 1、JSONPath是xpath在json的应用2、JSONPat...

  • python中jsonpath模块

    简介jsonpath表达式与xPath表达式类似,jsonpath是一种信息抽取类库,提供的json解析非常强大,...

  • jsonpath 2022-01-16

    jsonpath是用于解析json文件的强大工具,不同语言都有各自的实现 jsonpath的设计思想和正则表达式相...

网友评论

      本文标题:使用jsonpath解析json

      本文链接:https://www.haomeiwen.com/subject/oijiwqtx.html