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]
Мохит Раджпут
источник