Python: преобразование списка словарей в json


85

У меня есть список словарей, которые выглядят примерно так:

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

и так далее. В списке может быть больше документов. Мне нужно преобразовать их в один документ JSON, который можно вернуть через бутылку, и я не могу понять, как это сделать. Пожалуйста помоги. Я видел похожие вопросы на этом сайте, но я не мог понять их решения.

Ответы:


124

использовать библиотеку json

import json
json.dumps(list)

кстати, вы можете подумать об изменении списка переменных на другое имя, listэто встроенная функция для создания списка, вы можете получить неожиданное поведение или некорректный код, если не измените имя переменной.


1
Хорошо. Это всего лишь образец, и я использую для этого название mylist. Работает ли dumps () и для списков? Я думал, что это должно использоваться только для диктовок.
Апурв Ашутош

Можно ли сохранить файл как массив столбцов JSON или массив строк JSON?
Anoop Toffy

ПРИМЕЧАНИЕ: переназначение списка (list = [1,2,3]) конфликтует со встроенным методом list (). пожалуйста помни.
нихил свами

27
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 (). пожалуйста помни.
нихил свами

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]
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.