【发布时间】:2020-08-15 19:01:27
【问题描述】:
这里是 Python 菜鸟。我看到了许多类似的问题,但没有一个是我的确切用例。我有一个简单的嵌套 json,我正在尝试访问存在于 metadata 中的元素 name。下面是我的示例 json。
{
"items": [{
"metadata": {
"name": "myname1"
}
},
{
"metadata": {
"name": "myname1"
}
}
]
}
下面是我目前尝试过的代码,但没有成功。
import json
f = open('./myfile.json')
x = f.read()
data = json.loads(x)
for i in data['items']:
for j in i['metadata']:
print (j['name'])
下面的错误提示
文件“pythonjson.py”,第 8 行,在 print (j['name']) TypeError: string indices must be integers
当我打印 print (type(j)) 时,我收到了以下 o/p <class 'str'>。所以我可以看到它是一个字符串列表而不是字典。那么现在如何解析字符串列表?任何官方文档或指南都会对了解这个概念有很大帮助。
【问题讨论】:
-
尝试把嵌套元素也转成json -->
print(json.loads(j)['name'] -
提供的
JSON无效。此外,您可能在第一个 for 循环中需要print(item['metadata']['name'])。不需要第二个循环。 -
你的 json 无效
-
除了缺少
:之外,嵌套的JSON 类似于{"foo": "{\"bar\": 5}"},其中foo键的值本身可以被解码。你所拥有的只是一个“普通”的 JSON 对象,当它被解码时,会以你用来解码它的任何语言生成一个嵌套的数据结构。 -
很抱歉发布了无效的 Json。现在已经更正了。
标签: python json list python-3.7