繁体   English   中英

如何为通过 API 上传的 JSON 数据保留 null 的值

[英]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 对其进行更新。

在 PyCharm 调试器中,我看到了这个: 在此处输入图像描述

请注意,即使 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']

将字符串“None”转换为正确的 None 的 Pythonic 方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM