Python:将字典列表转换为JSON

128

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

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

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

4个回答

175

使用json库

import json
json.dumps(list)

顺便提一下,你可能考虑将变量list改成另一个名称,list是创建列表的内置函数,如果不更改变量名称,则可能会出现一些意想不到的行为或有错误的代码。


2
好的。这只是一个示例,我使用名称mylist。dumps()对列表也适用吗?我认为它只应该用于字典。 - Apoorv Ashutosh
能否将文件保存为JSON列数组或JSON行数组? - Anoop Toffy
1
注意:重新分配列表(list = [1,2,3])会与内置方法list()冲突,请谨慎使用。 - nikhil swami
我想要移除外层数组,@markcial。你能帮忙吗? - Abdul Haseeb
回复 @Abdul Haseeb,请查看 https://docs.python.org/3/tutorial/datastructures.html 并了解 list.pop([i])。 - trevellyon

62
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]}]

1
注意:重新分配列表(list = [1,2,3])会与内置方法list()冲突,请记住。 - nikhil swami
仅仅使用 data = json.dumps(list, indent=2) 不就足够了吗?我有什么遗漏的吗? - precise

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

4
你好!虽然这可能解决了提问者的问题,但是在SO上仅提供代码答案通常是不鼓励的。请解释一下为什么这是解决问题的方法,因为这将有助于提问者更好地理解,并将使将来访问该网站的用户受益。谢谢! - d_kennetz

0

如果你想将它转换成一个带有一些确定键值的单一字典,你可以使用下面的代码。

data = ListOfDict.copy()
PrecedingText = "Obs_"
ListOfDictAsDict = {}
for i in range(len(data)):
    ListOfDictAsDict[PrecedingText + str(i)] = data[i]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接