python вывод информации в json
Использую python, вывожу словарь в json. Делаю это так:
print(json.dumps(result_reg, indent=4))
Сам словарь выглядит вот так:
{'index': 161, 'name': 'task_31', 'type': 1, 'byte_address': 2658, 'flags': 3, 'description': 'task<>', 'group': 16384, 'value': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32]}
А во время вывода словарь выглядит вот так:
{
"p_default": "NONE",
"p_value": "NONE",
"saved_address": "NONE",
"description": "task<>",
"name": "task_31",
"type": 1,
"ind": "NONE",
"guid": "NONE",
"size": "NONE",
"property": "NONE",
"group": 16384,
"p_iec": "NONE",
"mdb_addr": 61329.0,
"index": 161,
"byte_address": 2658,
"flags": 3,
"value": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32
]
}
Хотелось бы чтобы словарь выводился правильно (чтобы список не выводился построчно каждый символ) можно ли это как то сделать? В результате хочу получить вот так:
{
"p_default": "NONE",
"p_value": "NONE",
"saved_address": "NONE",
"description": "task<>",
"name": "task_31",
"type": 1,
"ind": "NONE",
"guid": "NONE",
"size": "NONE",
"property": "NONE",
"group": 16384,
"p_iec": "NONE",
"mdb_addr": 61329.0,
"index": 161,
"byte_address": 2658,
"flags": 3,
"value": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32 ]
}
Ответы (1 шт):
Чтобы элементы списка не выводились по одному, проще всего вручную перевести результат этого значения в строковый тип:
result_reg['value'] = str(result_reg['value'])
И потом вывести также
print(json.dumps(result_reg, indent=4))
Также есть специальные библиотеки для красивого вывода json, например как в этом ответе. Ещё можно сделать свою функцию сериализации для json.dumps, которая может обрабатывать каждый элемент словаря и аналогично переводить каждый список в словаре в удобный тип. Подробнее есть в документации . Почему работает способ с переводом в строку, объясняется в заметках в этой части документации.