• 如何Python中使用JsonPath(JsonPath的概念和使用)
  • 发布于 2个月前
  • 313 热度
    0 评论
关于JSON
JSON是一个标记符序列。这套标记符包括:构造字符、字符串、数字和三个字面值。

构造字符
JSON包括六个构造字符,分别是:左方括号、右方括号、左大括号、右大括号、冒号与逗号。
JSON值
JSON值可以是对象、数组、数字、字符串或者三个字面值(false、true、null),并且字面值必须是小写英文字母。
对象
对象是由花括号括起来,逗号分割的成员构成,成员是字符串键和上面所说的JSON值构成,例如:
{"name":"jack","age":18,"address":{"country"}}
数组
数组是由方括号括起来的一组数值构成,例如:
[1, 2, 32, 3, 6, 5, 5]

为什么要使用JSON
JSON是一种轻量级的数据交互格式,它使得人们很容易的进行阅读和编写。同时也方便机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。

Python中使用JsonPath
JsonPath是解析Json字符串用的,类似于Xpath,使用JsonPath可以根据语法提取Json串中的关键信息和相关键值,无论嵌套了多少层,都能提取出来,省去了先反序列化成对象再取值的麻烦,堪称一项伟大的发明。
JsonPath语法要点
1. $ 表示文档的根元素
2. @ 表示文档的当前元素
3. .node_name 或 [‘node_name’] 匹配下级节点
4. [index] 检索数组中的元素
5. [start : end : step] 支持数组切片语法
6. * 作为通配符,匹配所有成员
7 .… 子递归通配符,匹配成员的所有子元素
8. () 使用表达式
9. ?()进行数据筛选
下表将列举所有支持的语法,并对XPath进行比较:

注意:
1.JsonPath的索引从0开始计数

2. JsonPath中字符串使用单引号表示,例如:$.store.book[?(@.category=='reference')]中的'reference'


JsonPath示例
下面是相应的JsonPath的示例,代码来源https://goessner.net/articles/JsonPath/,JSON文档如下:
{
    "store": {
        "book": [{
                "category": "reference",
                "author": "堆代码 www.duidaima.com",
                "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
        }
    }
}
接下来我们看一下如何对这个文档进行解析:

jsonpath其实是非常适合用来获取json格式的数据的一款工具,最重要的是这款工具轻量简单容使用。
用户评论