python jsonpath模块

jsonpath

jsonpath第三方模块。

jsonpath是json的XPath工具,简单说就是从 字典对象 中查找数据更方便,可以解析多层嵌套的json数据。
不使用jsonpath时查询 字典对象 中的数据需要一层一层的查找数据,太麻烦了。
使用jsonpath后就不需要从 字典对象 中一层一层的查询数据,从而解决太麻烦的问题。

安装:

  pip install jsonpath

导入:

  import jsonpath

使用:

jsonpath.jsonpath(obj, expr, result_type='VALUE')

"""
  参数:
    obj		字典对象
    expr	查询数据的表达式,JSONPath
    result_type 有三个值选择:'VALUE'(默认)、'IPATH'、'PATH'
"""

源码:

在这里插入图片描述

XPath 与 JSONPath 对应语法:

在这里插入图片描述

实例:

import jsonpath
dic = {
    'total':10,
    'code':200,
    'data':[
        {'name': '小王', 'age': 23, 'sex': '男', 'addr': '社会大学'},
        {'name': '小李', 'age': 21, 'sex': '男', 'addr': '社会大学'},
        {'name': '小明', 'age': 28, 'sex': '男', 'addr': '社会大学'},
        {'name': '老王', 'age': 20, 'sex': '男', 'addr': '社会大学'},
        {'name': '狗蛋', 'age': 25, 'sex': '男', 'addr': '社会大学'},
        {'name': '小丽', 'age': 21, 'sex': '女', 'addr': '社会大学'},
        {'name': '小梅', 'age': 22, 'sex': '女', 'addr': '社会大学'}
    ]
}
print(jsonpath.jsonpath(dic,'$..name'))

输出结果:

在这里插入图片描述

jsonpath第三个参数result_type:

值是 ‘IPATH’ 时:

print(jsonpath.jsonpath(dic,'$..name',"IPATH"))

输出结果:

在这里插入图片描述

值是 ‘PATH’ 时:

print(jsonpath.jsonpath(dic,'$..name',"PATH"))

输出结果:

在这里插入图片描述

jsonpath.py源码的 __main__:

if __name__ == '__main__':
    try:
        import json        # v2.6
    except ImportError:
        import simplejson as json

    import sys

    # XXX take options for output format, output file, debug level

    if len(sys.argv) < 3 or len(sys.argv) > 4:
        sys.stdout.write("Usage: jsonpath.py FILE PATH [OUTPUT_TYPE]\n")
        sys.exit(1)

    object = json.load(file(sys.argv[1]))
    path = sys.argv[2]
    format = 'VALUE'    

    if len(sys.argv) > 3:
        # XXX verify?
        format = sys.argv[3]

    value = jsonpath(object, path, format)

    if not value:
        sys.exit(1)

    f = sys.stdout
    json.dump(value, f, sort_keys=True, indent=1)
    f.write("\n")

    sys.exit(0)

jsonpath相关链接:

http://www.ultimate.com/phil/python/#jsonpath
https://goessner.net/articles/JsonPath/
https://github.com/masukomi/jsonpath-perl/tree/master

-----结束------
仅学习。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值