繁体   English   中英

访问 JSON 嵌套 arrays 在 Python

[英]Access JSON nested arrays in Python

我是 Python 的新手,我正在尝试处理某些事情,但没有找到答案或者是否已经被问到。 我正在调用 API 并以 JSON 的形式接收一些数据。 我正在剥离某些我不需要的位,而密钥被剥离,只有剩余的值不会成为问题,但我无法进入它们,因为我想要访问的密钥嵌套在一个大批。

我一直在访问数据,最多可以访问 json.dumps(payload['output']['generic']) 但我似乎无法在网上找到任何关于如何仅访问这些最后值的信息。

如果这个问题已经存在,请提前道歉。

 { "output": { "generic": [ { "response_type": "text", "text": "hi" } ], "intents": [ { "intent": "CollectionDate", "confidence": 0.8478035449981689 } ], "entities": [ { "entity": "Payslip", "location": [ 19, 26 ], "value": "When is my collection date", "confidence": 1 } ] }, "context": { "global": { "system": { "turn_count": 10 } }, "skills": { "main skill": { "user_defined": { "DemoContext": "Hi," }: "system": {} } } } }

澄清:

我想访问“文本”、“意图”和“信心”

目前我正在打印发布的值,然后是我想要的部分的响应,如下所示。

print(x)
print(json.dumps(payload['output']['generic']))
print(json.dumps(payload['output']['intents']))

首先使用以下代码将 json 转换为字典:

json_data = json.loads(str(yourData))

之后,在你的情况下,最外面的键是“输出”,它是另一个字典,所以只需使用json_data['output']来访问里面的内容。

对于“输出”内的其他键,例如“通用”,您可以看到它是一个带有 [] 括号的数组。 首先使用json_data['output'][index]来获取里面的内容,然后使用与访问 dict 相同的方法来访问这样的键内部的内容。

他们的关键是 Traceback 错误表明索引“列表”存在问题

这是因为“列表”类型是有效的 JSON 类型,并且generic包含长度为 1 的列表,其中包含一个 dict!

>>> payload['output']['generic']['text']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not str
>>> type(payload['output']['generic'])
<class 'list'>
>>> len(payload['output']['generic'])
1
>>> payload['output']['generic'][0]
{'response_type': 'text', 'text': 'hi'}
>>> type(payload['output']['generic'][0])
<class 'dict'>
>>> payload['output']['generic'][0]['text']
'hi'
>>>

因此,鉴于您预期的输入 JSON 格式,您将需要知道如何索引以提取每个所需的数据点。

有几个包,glom 就是其中之一,可以帮助您处理 API 生成的 JSON 中的缺失值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM