• jsonpath介绍与使用


    一、什么是jsonpath

      用来解析json数据的所使用的。

    二、拓展

    1、python 处理json格式所使用的函数

    (1)json.dumps()  

      将字典或者列表转换为json格式的字符串。

    (2)json.loads()

      将json格式字符串转换为python对象。

    (3)json.dump()

      将字典或者列表转换为json格式的字符串并且写入到文件中。

    (4)json.load()

      从文件中读取json格式的字符串并且转换为python对象。

    (5)实例

    2、前端处理json格式的数据

      将json格式字符串转换为js对象,两种方式:

    (1)JSON.parse("json格式的字符串")

    (2)eval('(' + json格式字符串 + ')')

    三、jsonpath如何解析json数据

    1、安装jsonpath

      pip3 install jsonpath

    2、xpath与jsonpath对比

    XPath JSONPath Description
    / $ 表示根元素
    . @  当前元素
    / . or [] 子元素
    .. n/a 父元素
    // .. 递归下降,JSONPath是从E4X借鉴的。
    * * 通配符,表示所有的元素
    @ n/a  属性访问字符
    [] []
    子元素操作符
    | [,]
    连接操作符在XPath 结果合并其它结点集合。JSONP允许name或者数组索引。
    n/a [start:end:step]
    数组分割操作从ES4借鉴。
    [] ?()
    应用过滤表示式
    n/a ()
    脚本表达式,使用在脚本引擎下面。
    () n/a Xpath分组

    注:

    (1) []在xpath表达式总是从前面的路径来操作数组,索引是从1开始。

    (2) 使用JOSNPath的[]操作符操作一个对象或者数组,索引是从0开始。

    3、jsonpath实例

    jsonpath_exam.py

    #
    !/usr/local/bin/python3.7 import json import jsonpath # 从文件中读取json格式的字符串并且转换为python对象 obj = json.load(open('Reptile/books.json', 'r', encoding='utf-8')) # 获取所有书的作者 authors = jsonpath.jsonpath(obj, '$.store.book[*].author') print(authors) # 获取所有的作者 authors = jsonpath.jsonpath(obj, '$..author') print(authors) # store的所有元素。所有的book和bicycle store_elements = jsonpath.jsonpath(obj, '$.store.*') print(store_elements) # 获取store里面的所有东西的price prices = jsonpath.jsonpath(obj, '$.store.*..price') print(prices) # 获取第三本书 book3 = jsonpath.jsonpath(obj, '$.store.book[2]') print(book3) # 获取最后一本书 book_last = jsonpath.jsonpath(obj, '$.store.book[(@.length-1)]') print(book_last) # 获取前面的两本书 book_1_2 = jsonpath.jsonpath(obj, '$..book[0,1]') print(book_1_2) # 过滤出所有的包含isbn的书。 isbn = jsonpath.jsonpath(obj, '$..book[?(@.isbn)]') print(isbn) # 过滤出价格低于10的书。 under10 = jsonpath.jsonpath(obj, '$..book[?(@.price<30)]') print(under10) # 找出所有元素 all = jsonpath.jsonpath(obj, '$.*') print(all)
    books.json

    { "store": { "book": [ { "category": "文学作品", "author": "钱钟书", "title": "围城", "price": 80.5 }, { "category": "历史作品", "author": "孔子", "title": "春秋", "price": 90.9 }, { "category": "天文作品", "author": "天文", "title": "史上最强仙人", "isbn": "0-553-21311-3", "price": 80.9 }, { "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 } } }
     
  • 相关阅读:
    GDI绘制时钟效果,与系统时间保持同步,基于Winform
    Asp.Net Core API网关Ocelot
    Docker打包 Asp.Net Core应用,在CentOS上运行
    【C#】数据库脚本生成工具(二)
    【C#附源码】数据库文档生成工具支持(Excel+Htm)
    微信小程序初使心得【微信小程序快速入门】
    论:开发者信仰之“天下IT是一家“(Java .NET篇)
    线程池,千万注意,原来很多人都在错用
    .NET跨平台之运行与Linux上的Jexus服务器
    StackExchange.Redis 之 SortedSet 类型示例
  • 原文地址:https://www.cnblogs.com/lxmtx/p/12916659.html
Copyright © 2020-2023  润新知