Как записать ответ в файл с форматом JSON, используя python? - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь сохранить ответ от API в формате JSON.Я получил ответ JSON в строковом формате и сохранен в файле.Как мне сделать это или конвертировать с отступом, как мы видим в приложении onlineJSONViewer?или в формате JSON.

Код, который я использовал для хранения в файле.

    def test_url(self):
       resp =requests.get(www.myurl.com)
       data = resp.text
       f = open("19octfile.json", "w")
       f.write(data)
       f.close()

Этот код хранит ответ в 19octfile.json в следующем формате:

{"data": [{"id":"myname","id":"123","name":"myname","user":"m3","provider":"user","region":"india"}]}

Теперь, как я могу сохранить ответ с отступом, т.е. в формате JSON, чтобы пользователь мог легко понять, когда читает.

Мой другой TRY, но напрасно:

        with codecs.open('data.json', 'w', 'utf8') as f:
        f.write(json.dumps(data, sort_keys=True, ensure_ascii=False))

Этот код даеттот же результат с символом Unicode без отступа

       with open('17octenv71232111.json', 'w') as outfile:
           json.dump(data,outfile)
           outfile.close()

Этот код также аналогичен результат с символом Unicode и без отступа

Может ли кто-нибудь мне помочь, есть ли библиотека, которая может выполнять работу с форматированием или любойкод в помощь.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Функция json.dumps принимает именованный параметр indent.Из документации:

Если отступ - неотрицательное целое число, то элементы массива JSON и члены объекта будут напечатаны с этим уровнем отступа.Уровень отступа 0, или отрицательный, будет вставлять только новые строки.Ни один (по умолчанию) выбирает наиболее компактное представление.

Сначала вам нужно загрузить содержимое файла json в объект python.Ваш текущий код передает строку json в json.dumps.Используйте следующее:

j = json.loads(data)
f.write(json.dumps(j, sort_keys=True, indent=4))

Здесь функция json.loads превращает строку json в объект python, который можно передать в json.dumps.

0 голосов
/ 19 октября 2018
import json
d={"data": [{"id":"myname","id":"123","name":"myname","user":"m3","provider":"user","region":"india"}]}
print(json.dumps(d,indent=2))

Для записи в файл

with open('17octenv71232111.json', 'w') as outfile:
   outfile.write(json.dumps(d,indent=2))
...