jsonpath的简单应用

        这里是清安,本篇我们简单的学习一下jsonpath取值。前面说过一些字典取值,列表取值,元组取值,字符串取值,正则表达式等等。其实前面的理解了,此处理解起来就不会太难。

        对于jsonpath的定义:JSONPath 表达式始终引用 JSON 结构,就像 XPath 表达式与 XML 文档结合使用一样。由于 JSON 结构通常是匿名的,并且不一定具有“根成员对象”,因此 JSONPath 假定$分配给外层对象的抽象名称。

JSONPath表达式可以使用点- 表示法
$.store.book[0].title
或括号- 表示法
$['store']['book'][0]['title']

        看着是有点懵逼吧,一起看看实例吧:

# -->>>清安<<<---
import jsonpatha = {"home": {"information": [{"name": "清安","sex": "男","age": 18,"Telephone": 12345678900},{"name": "QA","sex": "男","age": 19,"Telephone": 98765432100},{"name": "AQA","sex": "女","age": 20,"Telephone": 1597532486200},{"name": "QAQ","sex": "女","age": 19,"Telephone": 96385274100}],"hobby": {"Bicycle": "red","car": "yellow"}
}
}

        我们来看看上面这个例子,根据例子来说一些实例。

获取所有name键对应的值

# -->>>清安<<<---
import jsonpathi = jsonpath.jsonpath(a,"$..name")
print(i)# ['清安', 'QA', 'AQA', 'QAQ']

获取所有Telephone对应的值

# -->>>清安<<<---
import jsonpatho = jsonpath.jsonpath(a,'$.home..Telephone')print(o)

        这里运用第一种写法也是可以的哦。直接$..Telephone。

获取home下的information下的全部性别

# -->>>清安<<<---
import jsonpathp = jsonpath.jsonpath(a,'$.home.information[*].sex')
print(p)

        其实方法都是类似的,以上三种例子大可以用同一种方式来写,灵活多变,看你自己所取得数据的结构是怎么样的了。下面给列出一些例子,以便于后续的查阅:

XPathJSON路径描述
/$根对象/元素
.@当前对象/元素
/. 或者 []子运算符
..不适用父运算符
//..递归下降。JSONPath 从 E4X 借用了这种语法。
**通配符。所有对象/元素,无论其名称。
@不适用属性访问。JSON 结构没有属性。
[][]下标运算符。XPath 使用它来迭代元素集合。在 Javascript 和 JSON 中,它是本机数组运算符。
|[,]XPath 中的联合运算符导致节点集的组合。JSONPath 允许将备用名称或数组索引作为一组。
不适用[开始:结束:步骤]从 ES4 借来的数组切片运算符。
[]?()应用过滤器(脚本)表达式。
不适用()脚本表达式,使用底层脚本引擎。
()不适用Xpath 中的分组

        此处所列举只是部分,但也够用。

XPathJSON路径结果
/home/book/author$.store.book[*].author店内所有书籍的作者
//author$..author所有作者
/store/*$.store.*所有东西都在商店里,包括一些书和一辆红色自行车。
/store//price$.store..price商店里所有东西的价格。
//information[3]$..information[2]第三个人信息
//information[last()]$..information[(@.length-1)]
$..information[-1:]
按顺序排列的最后一个人信息。
//information[position()<3]$..information[0,1]
$..information[:2]
前两个人信息
//information[sex]$..information[?(@.sex)]过滤所有带有 sex的信息
//information[age<19]$..information[?(@.age<19)]过滤并所有年龄低于 19岁人的信息
//*$..*XML 文档中的所有元素。JSON结构的所有成员。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部