简单查询类json结构
pson的Python项目详细描述
python库使查询类似json的结构变得简单!
随着返回json的api的激增,使用类似json的结构(即如果使用json并通过json.loads()运行它,您将得到什么)查询这些类型的结构是一个常见的需求。
大多数人要么手动遍历结构,要么编写自己的查询逻辑,这个库旨在通过提供通用的查询实用程序来解决这一需求。它使用点符号以类似于文档数据库(如mongodb)的方式遍历结构。
示例
用以下json示例演示:
json={'header':{'title':'Hello World','year':2014},'body':{'translations':[{'language':'french','translation':'bonjour'},{'language':'german','translation':'guten tag'}]}}
传统(预pson)方法:
>>> json['header']['title']'Hello World'
新的pson方法:
>>> frompsonimportpathqueryaspq>>> pq(json,'header.title')'Hello World'
更多pson示例:
>>> frompsonimportpathqueryaspq>>> pq(json,'header.title')'Hello World' # as you'd expect it can return sub-structures >>> pq(json,'body'){'translations': [{'translation': 'bonjour', 'language': 'french'}, {'translation': 'guten tag', 'language': 'german'}]} # and arrays >>> pq(json,'body.translations')[{'translation': 'bonjour', 'language': 'french'}, {'translation': 'guten tag', 'language': 'german'}] # you can query into arrays using numerical indicies >>> pq(json,'body.translations.0.language')'french' # you can also not specify an index and get back an array where the rest of the query # is applied to every element in the array >>> pq(json,'body.translations.language')['french', 'german']
它如何处理丢失的值?
>>> frompsonimportpathqueryaspq # by default it returns None rather than throwing an exception >>> pq(json,'header.author')None # you can over-ride what it returns though >>> pq(json,'header.author',missing="Unknown")'Unknown' # which is useful for situations like where you're building strings and don't want to deal # with lots of KeyError exceptions >>> pq(json,'header.title')+' by '+pq(json,'header.author',missing="Unknown")'Hello World by Unknown'
安装
待定