zoukankan      html  css  js  c++  java
  • python中jsonpath模块运用

    原文链接:https://www.cnblogs.com/denise1108/p/10265911.html

    1. jsonpath介绍
    用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。

    使用方法如:

    import jsonpath
    res=jsonpath.jsonpath(dic_name,'$..key_name')
    #嵌套n层也能取到所有key_name信息,其中:“$”表示最外层的{},“..”表示模糊匹配,当传入不存在的key_name时,程序会返回false

    2. JsonPath 对于 JSON 来说,相当于 XPath 对于 XML。
            安装方法:pip install jsonpath
     
            官方文档:http://goessner.net/articles/JsonPath

    3. JsonPath与XPath语法对比:

    Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。

    XpathJSONPath描述
    / $ 跟节点
    . @ 现行节点
    / . or [] 取子节点
    .. n/a 就是不管位置,选择所有符合条件的条件
    * * 匹配所有元素节点
    [] [] 迭代器标示(可以在里面做简单的迭代操作,如数组下标,根据内容选值等)
    &#124 [,] 支持迭代器中做多选
    [] ?() 支持过滤操作
    n/a () 支持表达式计算
    () n/a 分组,JsonPath不支持

    4. 使用实例

    d={
            "error_code": 0,
            "stu_info": [
                    {
                            "id": 2059,
                            "name": "小白",
                            "sex": "",
                            "age": 28,
                            "addr": "河南省济源市北海大道32号",
                            "grade": "天蝎座",
                            "phone": "18378309272",
                            "gold": 10896,
                            "info":{
                                "card":434345432,
                                "bank_name":'中国银行'
                            }
    
                    },
                    {
                            "id": 2067,
                            "name": "小黑",
                            "sex": "",
                            "age": 28,
                            "addr": "河南省济源市北海大道32号",
                            "grade": "天蝎座",
                            "phone": "12345678915",
                            "gold": 100
                    }
            ]
    }
    
    res= d["stu_info"][1]['name'] #取某个学生姓名的原始方法:通过查找字典中的key以及list方法中的下标索引
    print(res) #输出结果是:小黑
    
    import jsonpath
    res1=jsonpath.jsonpath(d,'$..name') #嵌套n层也能取到所有学生姓名信息,$表示最外层的{},..表示模糊匹配
    print(res1) #输出结果是list:['小白', '小黑']
    
    res2= jsonpath.jsonpath(d,'$..bank_name')
    print(res2) #输出结果是list:['中国银行']
    
    res3=jsonpath.jsonpath(d,'$..name123') #当传入不存在的key(name)时,返回False
    print(res3) #输出结果是:False
  • 相关阅读:
    SVN相关
    Sublime text 2/3 中 Package Control 的安装与使用方法
    JavaScript 限制input输入类型(多种方法实现)
    yahoo的30条优化规则
    浏览器页面加载解析渲染机制(一)
    Cookies 和 Session的区别
    Post Get 区别
    Vue 学习之 关键字、关键单词
    移动H5前端性能优化指南
    『Python基础练习题』day01
  • 原文地址:https://www.cnblogs.com/ella-li/p/11855834.html
Copyright © 2011-2022 走看看