擅长:python、mysql、java
<p>复杂的JSON文档和对此类文档的查询与处理XML文档相比会带来类似的问题;一个<em>可以</em>使用一组自定义的列表理解和实用功能,但是一个<em>应该</em>使用一个专用工具</p>
<p>要在Python中操作JSON文档,您可以查看<a href="https://pypi.org/project/jsonpath-ng/" rel="nofollow noreferrer">jsonpath_ng</a>:</p>
<ul>
<li>要提取的项是使用JSONPath表达式定义的,该表达式相当于XML的XPath</li>
<li>只需添加/更新JSONPath表达式即可提取更多/新项</li>
</ul>
<p>在下一个示例中,<code>QUERIES</code>中定义的JSONPath表达式将在JSON文档上逐个运行:</p>
<pre><code>import requests
import jsonpath_ng
import json
URL = 'https://api.dictionaryapi.dev/api/v2/entries/en_US/fish'
QUERIES = {
'First kind, first meaning, first definition': jsonpath_ng.parse('[0].meanings[0].definitions[0].definition'),
'All kind, first definitions': jsonpath_ng.parse('[*].meanings[0].definitions[0].definition'),
'All definitions': jsonpath_ng.parse('[*].meanings[*].definitions[*].definition')
}
if __name__ == '__main__':
jsdata = requests.get(URL).json()
for name, query in QUERIES.items():
print(f' - {name} -')
for match in query.find(jsdata):
print(json.dumps(match.value, indent=2))
print()
</code></pre>