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"])
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"])