json.загружает изменение «» в одинарную кавычку

#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))