Python 学习
:
在线解析:
1、 操作
是用来提取指定 JSON 文档的部分内容。 许多编程语言都提供的了对 json 的解析。
对于 JSON 来说,相当于 XPath 对于 XML
中的 “根成员对象” 总是被引用为$,不管它是对象还是数组。
可以使用 点 表示法:$.store.book[0].title
或者 括号 表示法:$['store']['book'][0]['title']
安装:pip
-rw: 健壮且显著扩展的实现,带有一个明确的AST用于元编程。
-rw 介绍:
-rw 安装:pip -rw
操作符
操作符 和 描述
操作符描述
查询根元素。这将开始所有路径表达式
使用过滤谓词来处理当前节点。即过滤当前节点。
通配符。 任何可以使用名称和数字的地方都可以使用。
..
深层扫描。 任何可以使用名称的地方都可以使用
点,表示子节点。
['' (, '')]
括号 表示子项。
[ (, )]
数组索引 或 索引
[start:end]
数组切片操作。
[?()]
过滤表达式。 表达式的结果必须是一个 bool 值。
函数
函数可以在路径的末尾调用——函数的输入是路径表达式的输出。函数输出由函数本身决定。
函数描述输出
min()
提供数字数组的最小值
max()
提供数字数组的最大值
avg()
提供数字数组的平均值
()
提供数字数组的标准偏差值
()
提供数组的长度
sum()
提供数字数组的所有元素的和
过滤器运算符
过滤器 是 用于筛选数组的逻辑表达式。一个典型的过滤器应该是 [?(@.age > 18)],其中 @ 表示当前正在处理的项。可以使用逻辑运算符 && 和 || 创建更复杂的过滤器。字符串文字 必须用 单引号 或 双引号 括起来 ([?(@.color == 'blue')] or [?(@.color == "blue")])。
操作符描述
==
左边得值 等于 右边的值 ( 注意:数字 1 不等于 字符串 '1' )
!=
不等于
小于
大于
>=
大于等于
=~
匹配正则表达式 [?(@.name =~ /foo.*?/i)]
in
左边 in 右边 [?(@.size in ['S', 'M'])]
nin
左边 not in 右边
左边是右边的一个子字符串 [?(@.sizes ['S', 'M', 'L'])]
anyof
左边和右边相交 [?(@.sizes anyof ['M', 'L'])]
左边和右边不相交 [?(@.sizes ['M', 'L'])]
size
(数组或字符串)长度
empty
(数组或字符串)为空
示例
示例 Json:
{"store": {"book": [{"category": "reference","author": "Nigel Rees","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}},"expensive": 10
}
表达式示例:
( 点击链接测试 )结果
$.store.book[*].
获取 Json 中 store下book下的所有值
$..
获取 Json 中 所有 的值。
$.store.*
获取 store 下所有东西( book 和 )
$.store..price
获取 store下以及所有子节点下的所有 price
$..book[2]
获取 book数组的第3个值
$..book[-2]
获取 book数组的倒数第二个值
$..book[0,1]
获取 book数组的第一、第二的值
$..book[:2]
获取 book数组从索引 0 (包括) 到 索引 2 (不包括) 的所有值
$..book[1:2]
获取 book数组从索引 1 (包括) 到 索引 2 (不包括) 的所有值
$..book[-2:]
获取 book数组从索引 -2 (包括) 到 结尾 的所有值
$..book[2:]
获取 book数组从索引 2 (包括) 到 结尾 的所有值
$..book[?(@.isbn)]
获取 所有节点以及子节点中 book 数组包含 isbn 的所有值
$.store.book[?(@.price < 10)]
获取 store下 book 数组中 price < 10 的所有值
$..book[?(@.price