Создание файла JSON из данных ответа JSON в Python

Я хочу взять данные ответа json из запроса REST и создать фактический файл json. Я пробовал что-то подобное, но не вышло. По сути, он просто печатает заголовки. Какие-либо предложения?

params = {'f': 'json', 'where': '1=1', 'geometryType': 'esriGeometryPolygon', 'spatialRel': 'esriSpatialRelIntersects','outFields': '*', 'returnGeometry': 'true'}
r = requests.get('https://hazards.fema.gov/gis/nfhl/rest/services/CSLF/Prelim_CSLF/MapServer/3/query', params)

cslfJson = r.json()
path = r"C:/Workspace/Sandbox/ScratchTests/cslf.json"
file = open(path, 'w')
for line in cslfJson:
    file.write(line + "\r\n")

file.close()

посмотрите json.dump

Nimish Bansal 20.08.2018 21:33

Возможный дубликат Как мне записать данные JSON в файл?

AnkDasCo 20.08.2018 21:34
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
1 197
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

используйте модуль json

my_data = json.loads(r.json())
# my_data is a dict mapping the JSON

with open(path, 'w') as f:
    json.dump(my_data, f)

если хотите, вы можете распечатать красиво, используя параметр indent

json.dump(my_data, f, indent=2)

Хорошо, я просто попробовал cslfJson = json.loads(r.json()), который создает словарь, затем я использовал with open(path, 'w') as f: json.dump(cslfJson, f, indent=2). Получила следующую ошибку - TypeError: the JSON object must be str, bytes or bytearray, not 'dict'.

gwydion93 20.08.2018 21:55

Это немного бессмысленно. Нет причин загружать JSON только для того, чтобы выгрузить его обратно в файл. Просто сохраните содержимое ответа напрямую.

Daniel Roseman 20.08.2018 23:09

Ты прав. Это имеет смысл только в том случае, если вы хотите красиво распечатать

Massimo Costa 20.08.2018 23:13

Другие вопросы по теме