Python:将字典列表转换为JSON


82

我有一个字典列表,看起来像这样:

list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

等等。列表中可能还有更多文档。我需要将它们转换为一个JSON文档,可以通过bottle返回该文档,但我不知道该怎么做。请帮忙。我在该网站上看到了类似的问题,但是我无法理解那里的解决方案。

Answers:


118

使用json库

import json
json.dumps(list)

顺便说一句,您可能会考虑将变量列表更改为另一个名称,这list是列表创建的内置函数,如果不更改变量名称,则可能会出现一些意外行为或错误代码。


1
好的。这只是一个示例,为此我使用名称mylist。dumps()是否也适用于列表?我以为它只能用于命令。
Apoorv Ashutosh 2014年

是否可以将文件另存为JSON列数组或JSON行数组?
Anoop Toffy

注意:重新分配列表(list = [1,2,3])与内置方法list()冲突。铭记于心。
Nikhil swami

25
import json

list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

写入json文件:

with open('/home/ubuntu/test.json', 'w') as fout:
    json.dump(list , fout)

读取Json文件:

with open(r"/home/ubuntu/test.json", "r") as read_file:
    data = json.load(read_file)
print(data)
#list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

注意:重新分配列表(list = [1,2,3])与内置方法list()冲突。铭记于心。
Nikhil swami

1
response_json = ("{ \"response_json\":" + str(list_of_dict)+ "}").replace("\'","\"")
response_json = json.dumps(response_json)
response_json = json.loads(response_json)

2
嗨!虽然这可以解决OP的问题,但通常不建议仅在SO上编写代码答案。请提供一些有关为什么这是解决问题的方法的解释,因为这将有助于OP更好地理解并使站点的未来访问者受益。谢谢!
d_kennetz

0

要将其转换为具有确定键值的单个词典,可以使用下面的代码。

data = ListOfDict.copy()
PrecedingText = "Obs_"
ListOfDictAsDict = {}
for i in range(len(data)):
    ListOfDictAsDict[PrecedingText + str(i)] = data[i]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.