[英]How to preserve a value of null for JSON data upload via API
我正在使用 Meraki API 更新交换机端口信息。 我可以添加一个voiceVlan就好了。 问题是当我尝试通过 API 删除(清除)现有的 voiceVlan 时。
我不是第一个遇到这个问题的人: https://community.meraki.com/t5/Developers-APIs/which-parameters-in-an-API-call-are-required/mp/61890/highlight/false# M1973
一个人说当他添加:'Content-Type':'application/json'时它开始工作了,但我已经有了。
我相信我知道什么是错的,但我不知道如何克服它。
voiceVlan 字段是 integer 字段。 如果我给它喂任何 integer 它就可以了。 新值已成功更新。
在我提供给我的 Python 程序的 my.csv 文件中,我放置了“null”。 我打电话给 Meraki 支持,他们说他们无法解决“第三方”(即个人)程序,但他们说他们可以使用 null 通过 cURL 对其进行更新。
请注意,即使 my.csv 文件在该字段中包含 null,voiceVlan 是如何显示空字符串的。
然后,当我将 dict 转换为 json (port_data = ) 我看到这个:
voiceVlan 是一个空字符串。 那是行不通的,所以这是我的问题。 'enabled": true 是正确的,这就是它在 my.csv 文件中的情况。我不知道如何解决的问题是如何让 voiceVlan 值成为 null 而不是在我之后的空字符串将字典转换为 json?
voiceVlan 的 port_data 中的值需要是 null,而不是空字符串。
在 python 中, None
-> null
。 尝试使用:
new_dict['voiceVlan'] = None
前
json.dumps(new_dict)
我刚刚发现@unutbu 的帖子解决了我的问题:
if new_dict['type'] == 'access':
new_dict['voiceVlan'] = None if new_dict['voiceVlan'] == 'None' else new_dict['voiceVlan']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.