【问题标题】:How to preserve a value of null for JSON data upload via API如何为通过 API 上传的 JSON 数据保留 null 值
【发布时间】:2023-03-14 06:32:02
【问题描述】:

我正在使用 Meraki API 更新交换机端口信息。我可以添加一个voiceVlan就好了。 问题是当我尝试通过 API 删除(清除)现有的 voiceVlan 时。

我不是第一个遇到这个问题的人: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 字段是一个整数字段。如果我给它任何整数,它都会起作用。新值已成功更新。

在我提供给 Python 程序的 .csv 文件中,我放置了“null”。我打电话给 Meraki 支持 他们说他们无法解决“第三方”(即个人)程序,但他们说他们可以使用 null 通过 cURL 更新它。

在 PyCharm 调试器中,我看到:

请注意 voiceVlan 如何显示一个空字符串,即使我的 .csv 文件在该字段中有 null。

然后,当我将 dict 转换为 json (port_data = ) 时,我看到:

voiceVlan 是一个空字符串。那是行不通的,所以这是我的问题。 'enabled": true 是正确的,这就是我的 .csv 文件中的情况。我不知道如何解决的问题是,在我之后如何让 voiceVlan 值为 null 而不是空字符串把dict转成json?

voiceVlan 的 port_data 中的值需要为 null,而不是空字符串。

【问题讨论】:

    标签: json python-3.x python-requests


    【解决方案1】:

    在 python 中,None -> null。 尝试使用:

    new_dict['voiceVlan'] = None
    

    之前

    json.dumps(new_dict)
    

    【讨论】:

      【解决方案2】:

      我刚刚发现@unutbu 的帖子解决了我的问题:

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

      Pythonic way to convert the string "None" to a proper None

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-15
        • 2015-02-04
        • 2021-07-10
        • 2021-10-19
        • 1970-01-01
        • 2022-11-15
        • 2021-07-26
        • 1970-01-01
        相关资源
        最近更新 更多