开发者

Python Json读写操作之JsonPath用法详解

开发者 https://www.devze.com 2023-04-15 09:25 出处:网络 作者: 笃℃
目录python json读写操作_JsonPath用法详解1. 介绍2. 代码示例3. 参考Python Json读写操作_JsonPath用法详解
目录
  • python json读写操作_JsonPath用法详解
    • 1. 介绍
    • 2. 代码示例
  • 3. 参考

    Python Json读写操作_JsonPath用法详解

    1. 介绍

    JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括Javascript、Python、php和Java。

    JSONPath的安装方法如下:pip install jsonpath

    JSONPath语法和XPAT编程客栈H语法对比,JSON结构清晰,可读性高,复杂度低,非常容易匹配。JSONPath的语法与Xpath类似,如下表所示为JSONPath与XPath语法对比:

    Python Json读写操作之JsonPath用法详解

    2. 代码示例

    bookJson = {
      "store": {
        "book":[
          { "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
          },
          { "category": "ficandroidtion",
            "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
        }
      js}
    }
    

    变量bookJson中已经包含了这段JSON字符串,可通过以下代码反序列化得到JSON对象:

    books=json.loads(bookJson)

    1)查看store下的bicycle的color属性:

    checkurl = "$.store.bicycel.color"
    print(jsonpath.jsonpath(books, checkurl))
    # 输出:['red']

    2)输出book节点中包含的所有对象:

    checkurl = "$.store.book[*]"
    object_list=jsonpath.jsonpath(books, checkurl)
    print(object_list)

    3)输出book节点的第一个对象:

    checkurl = "$.store.book[0]"
    obj = jsonpath.jsonpath(books, checkurl)
    print(obj)
    # 输出: ['category': 'reference', 'author': 'Nigel Rees', 'title': 'Sayings of the Century', 'price': 8.95}]

    4)输出book节点中所有对象对应的属性title值:

    checkurl = "$.sto开发者_JAVA学习re.book[*].title"
    titles = jsonpath.jsonpath(books, checkurl)
    print(titles)
    # 输出: ['Sayings of the Century', 'The Lord of the Rings']

    5)输出book节点中category为fiction的所有对象:

    checkurl = "$.store.book[?(@.category=='fiction')]”
    books=jsonpath.jsonpath(books, checkurl)
    print(books)
    # 输出:[{'category': 'f编程客栈iction', 'author': 'J. R. R. Tolkien', 'title': 'The Lordof the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]

    6)输出book节点中所有价格小于10的对象:

    checkurl="$.store.book[?(@.price<10)]"
    books = jsonpath.jsonpath(books, checkurl)
    print(books)
    # 输出: [{'category': 'reference', 'author': 'Nigel pythonRees', 'title':'Sayings of the Century', 'price': 8.95}]

    7)输出book节点中所有含有isb的对象:

    checkurl = "$.store.book[?(@.isb)]"
    books = jsonpath.jsonpath(books,checkurl)
    print(books)
    # 输出: [{'category': 'fiction', 'author': 'J. R. R. Tolkien', 'title': 'The Lord of the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]

    3. 参考

    【1】https://blog.csdn.net/fallenjency/article/details/123276600

    到此这篇关于Python Json读写操作之JsonPath用法详解的文章就介绍到这了,更多相关Python JsonPath用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号