关于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格式的数据的一款工具,最重要的是这款工具轻量简单容使用。