Как загрузить данные словаря в JSON? - PullRequest
0 голосов
/ 16 ноября 2018

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

json.loads({"signature": {"timestamp": "1542320326", "token": "78b89c864547e371f7d708fcde9ccf3df937ce0e296cff8683", "signature": "822ae5f14a85dc25dacfd53a7ab1d55f03529aae0e8535d29758740924fde385"}, "event-data": {"tags": ["my_tag_1", "my_tag_2"], "timestamp": 1521233123.501324, "envelope": {"sending-ip": "173.193.210.33"}, "log-level": "warn", "id": "-Agny091SquKnsrW2NEKUA", "campaigns": [], "user-variables": {"my_var_1": "Mailgun Variable #1", "my-var-2": "awesome"}, "flags": {"is-test-mode": false}, "message": {"headers": {"to": "Alice <alice@example.com>", "message-id": "20110215055645.25246.63817@biennial-dot-filings.us", "from": "Bob <bob@biennial-dot-filings.us>", "subject": "Test complained webhook"}, "attachments": [], "size": 111}, "recipient": "alice@example.com", "event": "complained"}})

Traceback (последний вызов был последним): файл "", строка 1, в NameError: имя 'false' не определено

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Json не отображается напрямую на структуры данных Python.

вы должны сделать json.loads("your string") вместо этого. В JSON это false, где в Python у нас есть False

например

json.loads('{"signature": {"timestamp": "1542320326", "token": "78b89c864547e371f7d708fcde9ccf3df937ce0e296cff8683", "signature": "822ae5f14a85dc25dacfd53a7ab1d55f03529aae0e8535d29758740924fde385"}, "event-data": {"tags": ["my_tag_1", "my_tag_2"], "timestamp": 1521233123.501324, "envelope": {"sending-ip": "173.193.210.33"}, "log-level": "warn", "id": "-Agny091SquKnsrW2NEKUA", "campaigns": [], "user-variables": {"my_var_1": "Mailgun Variable #1", "my-var-2": "awesome"}, "flags": {"is-test-mode": false}, "message": {"headers": {"to": "Alice <alice@example.com>", "message-id": "20110215055645.25246.63817@biennial-dot-filings.us", "from": "Bob <bob@biennial-dot-filings.us>", "subject": "Test complained webhook"}, "attachments": [], "size": 111}, "recipient": "alice@example.com", "event": "complained"}}')
0 голосов
/ 16 ноября 2018

json.loads ожидает строку в качестве аргумента.Чтобы сделать объект JSON, который вы скопировали в допустимый строковый литерал в Python, вам необходимо заключить его в кавычки.

Поскольку сама строка JSON содержит символ ", вы должны использовать ':

json.loads('{"signature": {"timestamp": "1542320326", ... }}')
0 голосов
/ 16 ноября 2018

В Python false не является допустимым типом / выражением. Я думаю, что вы хотите, это False. Вы можете прочитать больше здесь .

Как уже упоминалось @Uku, вы можете использовать json.loads() для решения этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...