首先,我在搜索这个问题时遇到了麻烦,因为我不知道所有的术语(所以真的,给我在谷歌搜索中使用的正确术语在这方面同样有用问题)。
我需要在python中解析一些JSON,在解析之后将每个JSON字符串放入一个列表中(List,而不是Python的数组是否正确?)然后我将通过该列表推送JSON内容回到我的来源。
到目前为止,我可以解析出我想要的一部分JSON,但我不知道如何在括号之间打印部分。例如,我想让这个代码块中的每个部分(括号)都在一个单独的JSON行中:
{
"components": [
{
"self": "MY URL",
"id": "ID",
"name": "NAME",
"description": "THIS IS DESC",
"isAssigneeTypeValid": false
},
{
"self": "MY URL 2",
"id": "ID",
"name": "name",
"isAssigneeTypeValid": false
},
{
"self": "URL 3",
"id": "ID",
"name": "NAME 3",
"description": "DESC",
"isAssigneeTypeValid": false
}
]
}
我的文件中有更多的JSON,但是使用它,我可以将其归结为只返回上面的文本。
datas = json.loads(data)
print(datas['components'])
所以我的问题是如何打印一个块?或访问第一个' self'部?
答案 0 :(得分:3)
以下是如何迭代这些数据,将"components"
列表中的每个字典转换回JSON字符串:
import json
data = '''
{
"components": [
{
"self": "MY URL",
"id": "ID",
"name": "NAME",
"description": "THIS IS DESC",
"isAssigneeTypeValid": false
},
{
"self": "MY URL 2",
"id": "ID",
"name": "name",
"isAssigneeTypeValid": false
},
{
"self": "URL 3",
"id": "ID",
"name": "NAME 3",
"description": "DESC",
"isAssigneeTypeValid": false
}
]
}
'''
datas = json.loads(data)
for d in datas['components']:
print(json.dumps(d))
<强>输出强>
{"self": "MY URL", "description": "THIS IS DESC", "id": "ID", "isAssigneeTypeValid": false, "name": "NAME"}
{"self": "MY URL 2", "id": "ID", "isAssigneeTypeValid": false, "name": "name"}
{"self": "URL 3", "description": "DESC", "id": "ID", "isAssigneeTypeValid": false, "name": "NAME 3"}
答案 1 :(得分:1)
当您阅读它时,JSON是一个Python字典,因此您可以使用对字典有效的所有函数。
在你的情况下&#34;组件&#34;是字典的关键,其值是一个列表。列表中的每个项目都是另一个字典。
答案 2 :(得分:1)
如果您有一个有效的json文档,那么您可以简单地遍历components
列表。假设您将文件命名为<id>.json
,那么您可以执行以下操作:
datas = json.loads(data)
for component in datas['components']:
with open("{}.json".format(component['id']), 'w') as f:
json.dump(component, f)