Python3 - 解析嵌套 json 中的字符串列表

Python3 - Parse list of strings inside nested json

Python 菜鸟在这里。我看到了许多类似的问题,但 none 我的确切用例。我有一个简单的嵌套 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'])

下面是错误的

File "pythonjson.py", line 8, in print (j['name']) TypeError: string indices must be integers

当我打印 print (type(j)) 时,我收到了以下 o/p <class 'str'>。所以我可以看到它是一个字符串列表而不是字典。那么现在如何解析字符串列表?任何官方文档或指南都会对了解此概念有很大帮助。

您可能需要:

import json
f = open('./myfile.json')
x = f.read()
data = json.loads(x)
for item in data['items']:
    print(item["metadata"]["name"]

您的原文 JSON 无效(缺少冒号)。

访问名称的内容使用“i[”元数据“].keys()”这将return“元数据”中的所有键。

访问“元数据”中字典所有值的工作代码。

for i in data['items']:
    for j in i["metadata"].keys():
        print (i["metadata"][j])

**更新:**仅访问“名称”内容的工作代码。

for i in data['items']:
        print (i["metadata"]["name"])

你的 json 很糟糕, python 例外是明确无误的。您有基本字符串“name”并且您正在尝试...对其进行查找?

让我们去掉所有的json,看看真正的问题。你不知道如何遍历 dict。您实际上是在遍历键本身。如果你也想看到它们的值,你将需要 dict.items()

https://docs.python.org/3/tutorial/datastructures.html#looping-techniques

metadata = {"name": "myname1"}
for key, value in metadata.items():
    if key == "name":
        print ('the name is', value)

但是,如果您已经知道要查找的密钥,那又何必呢? 这就是为什么我们有 dict.

print ('the name is', metadata["name"])