Я хочу взять данные ответа 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 в файл?






используйте модуль 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'.
Это немного бессмысленно. Нет причин загружать JSON только для того, чтобы выгрузить его обратно в файл. Просто сохраните содержимое ответа напрямую.
Ты прав. Это имеет смысл только в том случае, если вы хотите красиво распечатать
посмотрите json.dump