如何在Python中使用jsonpath-rw模块处理Json对象

这期内容当中小编将会给大家带来有关如何在Python中使用jsonpath-rw模块处理Json对象,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

#如果用的requests发的请求
importjson
response=requests.get(url,headers=self.headers)
response=response.content.decode()
response=json.loads(response)#转成json对象,在python里也就是dict类型
#如果用的scrapy.Request发的请求
importjson
importscrapy
response=scrapy.Request(url,headers=self.headers)
response=response.text.decode()
response=json.loads(response)#转成json对象,在python里也就是dict类型

也就是说处理json对象其实可以和处理dict一样,那就要用到很多中括号,而且取值也只能取单个精确的值。一点都不灵活

如何在Python中使用jsonpath-rw模块处理Json对象

用过xpath和css选择器的人当然会觉得这种方法很笨重。

而恰巧json也有类型的选择器:jsonpath

但是需要注意的是,python的库并不是jsonpath(还真有这个库,但是不知如何使用,官方也没有给出python的使用文档),真正在python中可以使用的库是:jsonpath-rw

官方文档:https://pypi.python.org/pypi/jsonpath-rw (更多jsonpath的语法请点击链接)

下面只列下简单常用的基本方法

使用示例

>>>fromjsonpath_rwimportjsonpath,parse
>>>json_obj={"student":[{"male":176,"female":162},{"male":174,"female":159}]}
>>>jsonpath_expr=parse("student[*].male")
>>>male=jsonpath_expr.find(json_obj)
>>>male#返回的是list,但是不是我们想要的值
[DatumInContext(value=176,path=Fields('male'),context=DatumInContext(value={'male':176,'female':162},path=<jsonpath_rw.jsonpath.Indexobjectat0x000001C6B95109B0>,context=DatumInContext(value=[{'male':176,'female':162},{'male':174,'female':159}],path=Fields('student'),context=DatumInContext(value={'student':[{'male':176,'female':162},{'male':174,'female':159}]},path=This(),context=None)))),DatumInContext(value=174,path=Fields('male'),context=DatumInContext(value={'male':174,'female':159},path=<jsonpath_rw.jsonpath.Indexobjectat0x000001C6B9510588>,context=DatumInContext(value=[{'male':176,'female':162},{'male':174,'female':159}],path=Fields('student'),context=DatumInContext(value={'student':[{'male':176,'female':162},{'male':174,'female':159}]},path=This(),context=None))))]
#想要获取值,要用如下方法
>>>[match.valueformatchinmale]
[176,174]

上述就是小编为大家分享的如何在Python中使用jsonpath-rw模块处理Json对象了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注恰卡编程网行业资讯频道。

发布于 2021-03-17 20:55:20
收藏
分享
海报
0 条评论
162
上一篇:怎么在Python中使用win32com模块生成word表格 下一篇:如何在Python使用pickle模块储存对象
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码