Как сохранить нулевое значение для JSON загрузки данных через API - PullRequest
0 голосов
/ 04 мая 2020

Я работаю с Meraki API для обновления информации о порте коммутатора. Я могу добавить голосовой Vlan просто отлично. Проблема заключается в том, что я пытаюсь удалить (исключить) существующий голосовойлан через API.

Я не первый, кто сталкивается с этой проблемой: https://community.meraki.com/t5/Developers-APIs/which-parameters-in-an-API-call-are-required/m-p/61890/highlight/false#M1973

Один человек сказал, что он начал работать, когда он добавил: «Content-Type»: «application / json», но у меня уже есть это.

Мне кажется, я знаю, что не так, но я не знаю, как чтобы пройти его.

Поле voiceVlan является целочисленным полем. Если я кормлю его любым целым числом, оно работает. Новое значение успешно обновлено.

В моем файле .csv, который я передаю своей программе Python, я помещаю 'null'. Я позвонил в службу поддержки Meraki, и они сказали, что не могут создавать проблемы со сторонними (то есть личными) программами, но они сказали, что могут обновить его через cURL, используя null.

В отладчике PyCharm я вижу это: enter image description here

Обратите внимание, что voiceVlan показывает пустую строку, хотя мой файл .csv имеет значение NULL в этом поле.

Затем, когда я преобразовываю dict в json (port_data =) Я вижу это: enter image description here

voiceVlan - пустая строка. Это не сработает, так что это моя проблема. 'enabled': true является правильным, и именно так оно и есть в моем файле .csv. Моя проблема, которую я не знаю, как решить, заключается в том, как получить значение voiceVlan, равное нулю, а не пустую строку после того, как я преобразовать dict в json?

Значение в port_data для voiceVlan должно быть нулевым, а не пустой строкой.

Ответы [ 2 ]

1 голос
/ 04 мая 2020

In python, None -> null. Попробуйте использовать:

new_dict['voiceVlan'] = None

до

json.dumps(new_dict)
0 голосов
/ 04 мая 2020

Я только что нашел сообщение @unutbu, в котором исправлена ​​моя проблема:

if new_dict['type'] == 'access':
    new_dict['voiceVlan'] = None if new_dict['voiceVlan'] == 'None' else new_dict['voiceVlan']

Pythoni c способ преобразования строки "Нет" в правильное значение Нет

...