Правильный формат JSON в Python - PullRequest
0 голосов
/ 07 июня 2018

Мне нужно опубликовать данные в REST API.Одно поле, incident_type, должно быть передано в следующем формате JSON (должно включать квадратные скобки, а не просто фигурные скобки):

"incident_type_ids": [{
    "name": "Phishing - General"
}],

Когда я пытаюсь форсировать это в своем коде, ононе совсем верноОбычно будут некоторые дополнительные экранированные кавычки (например, выходные данные: "incident_type_ids": "[\\"{ name : Phishing - General }\\"]"), и я понял, что это потому, что я дважды кодировал данные JSON в переменной incident type, чтобы принудительно добавить скобки (в строке 6, которая с тех порбыло закомментировано):

#incident variables
name = 'Incident Name 2'
description = 'This is the description'
corpID = 'id'
incident_type = '{ name : Phishing - General }'
#incident_type = json.dumps([incident_type])
incident_owner = 'Security Operations Center'

payload = {
        'name':name,
        'discovered_date':'0',
        'owner_id':incident_owner,
        'description':description,
        'exposure_individual_name':corpID,
        'incident_type_ids':incident_type
    }
body=json.dumps(payload)
create = s.post(url, data=body, headers=headers, verify=False)

Однако, поскольку я закомментировал строку, я не могу получить incident_type в нужном мне формате (в скобках).

Итак, мой вопрос: как я могу получить переменную incident_type в правильном формате в конечном payload?

Ввод, который я вручную получил для работы с помощью интерактивного REST API продукта:

{
"name": "Incident Name 2",
"incident_type_ids": [{
    "name": "Phishing - General"
}],
"description": "This is the description",
"discovered_date": "0",
"exposure_individual_name": "id",
"owner_id": "Security Operations Center"
}

Я полагаю, что мой подход неверен, и я был бы признателен за любую помощь.Я новичок в Python, поэтому я ожидаю, что это ошибка новичка.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 07 июня 2018

Квадратные скобки JSON предназначены для массивов, соответствующих спискам Python.Фигурные скобки JSON предназначены для объектов, которые соответствуют словарям Python.

Таким образом, вам нужно создать список, содержащий словарь, а затем преобразовать его в JSON.

incident_type = [{"name": "Phishing - General"}]
incident_owner = 'Security Operations Center'

payload = {
        'name':name,
        'discovered_date':'0',
        'owner_id':incident_owner,
        'description':description,
        'exposure_individual_name':corpID,
        'incident_type_ids':incident_type
    }
body=json.dumps(payload)

Это лишь немного случайно, чтосинтаксис Python для этого аналогичен синтаксису JSON.

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