Как мне перевести мой вывод JSON в текстовом редакторе на следующую строку перед началом новой скобки, используя Python?

#python #json #text-editor

#python #json #текстовый редактор

Вопрос:

Как мне взять вывод json в текстовом редакторе и организовать его так, чтобы начало новой скобки начиналось со следующей строки, чтобы это выглядело аккуратно?

 with open(output, 'w') as json_file:
      rows = list(out)
      json.dump(rows, json_file) 
  

Это конец кода, который выводит мне json, но не аккуратно.

 [{column1:value1,column2:value1},{column1:value2,column2:value2},{column1:value3,column2:value3},{column1:value4,column2:value4}]
  

Я пробовал это. Однако я получаю сообщение об ошибке.

 with open(output, 'w') as json_file:
       rows = list(out)
       json.dump(rows, json_file)   ','   'n'
  

Я хотел бы, чтобы мой результат выглядел как

 [{column1:value1,column2:value1},
{column1:value2,column2:value2}, 
{column1:value3,column2:value3},
{column1:value4,column2:value4}]
  

Комментарии:

1. То, что вы ищете, называется «красивая печать». Если вы просто хотите посмотреть на это, передайте свой вывод через jq , в противном случае выполните какой-нибудь веб-поиск с этим именем, вы должны получить несколько результатов.

Ответ №1:

Хотя модуль json позволяет выбирать отступ, я не мог понять, как создавать пользовательские макеты.
Итак, мое лучшее решение заключается в следующем:

 import json

path = "/path/to/json"
d = [
    {"column1": "value1", "column2": "value1"},
    {"column1": "value2", "column2": "value2"}, 
    {"column1": "value3", "column2": "value3"},
    {"column1": "value4", "column2": "value4"}
]


lines = "["
for x in d[:-1]:
    lines  = json.dumps(x)   ",n"
lines  = json.dumps(d[-1])   "]"
with open(path, "w") as f:
    f.write(lines)