#python #json
Вопрос:
Я пишу программу для вызова API. Я пытаюсь преобразовать полезную нагрузку данных в json. Таким образом, я использую json.loads() для достижения этой цели.
Однако я столкнулся со следующей проблемой.
Я установил свою переменную следующим образом:
apiVar = [ "https://some.url.net/api/call", #url '{"payload1":"email@user.net", "payload2":"stringPayload"}',#payload {"Content-type": "application/json", "Accept": "text/plain"}#headers ]
Затем я попытался преобразовать значение apiVar[1] в объект json.
jsonObj = json.loads(apiVar[1])
Однако вместо того, чтобы выдавать мне вывод, подобный следующему:
{"payload1":"email@user.net", "payload2":"stringPayload"}
Вместо этого он дает мне вот это:
{'payload1':'email@user.net', 'payload2':'stringPayload'}
Я точно знаю, что это недопустимый формат json. Что я хотел бы знать, так это почему это происходит? Я пытаюсь найти решение для этого, но ничего не могу найти в нем. Все примеры кода предполагают, что вместо этого он должен был дать мне двойную кавычку.
Как мне это исправить, чтобы выводить двойные кавычки?
Комментарии:
1. JSON и python dict не совпадают, преобразуйте в JSON
2.
json.loads
возвращает обычноеdict
значение Python; JSON больше не участвует. Тип кавычек, используемых для отображения , которыеdict
не имеют значения.3. Спасибо, что указали на это. Я выполнил json.dumps (), немного изменил свою переменную и смог выполнить вызов API. Если бы никто не указал на это, я, вероятно, застрял бы на время, которое я не могу позволить себе потерять, поэтому я очень ценю эту помощь 🙂
Ответ №1:
json.loads()
берет строку JSON и преобразует ее в эквивалентную структуру данных Python, которая в данном случае представляет собой диктант, содержащий строки. И строки Python по умолчанию отображаются в одинарных кавычках.
Если вы хотите преобразовать структуру данных Python в JSON, используйте json.dumps()
, которая вернет строку. Или, если вы выводите данные прямо в файл, используйте json.dump()
.
В любом случае, ваша полезная нагрузка уже является допустимым JSON, поэтому единственная причина для ее загрузки-это если вы хотите внести в нее изменения перед вызовом API.
Ответ №2:
Вам нужно использовать файлы json.dumps для преобразования объекта обратно в формат json.
Строка с одинарными кавычками, к которой вы обращаетесь, вероятно, является методом str() или repr (), который просто используется для визуализации данных в виде объекта python (словаря), а не объекта json. попробуйте взглянуть на это:
print(type(jsonObj)) print(str(jsonObj)) print(json.dumps(jsonObj))