【问题标题】:null value in JSON is not interpreted by python for openstack APIJSON中的空值不被python解释为openstack API
【发布时间】:2013-07-29 08:15:48
【问题描述】:

我正在使用 OpenStack 的 REST API 以编程方式实现启动或停止服务器。

API 参考链接是http://api.openstack.org/api-ref.html#ext-os-server-start-stop 这需要python中的字典如下:

dict = {
     os-start:null
    } 

然后我正在执行 json.dumps(dict) 并向 openstack 的 nova 模块的公共 URL 发出 post 请求。

当我运行这个程序时,未知全局名称“null”的错误。因此,它不起作用。

我想知道这个在OpenStack上启动服务器工作的请求,我应该使用什么作为请求JSON中字段“os-start”的值。

如果需要任何其他信息,请告诉我。

提前谢谢你。

【问题讨论】:

    标签: python json openstack openstack-nova


    【解决方案1】:

    Python 的 None 单例被转换为 JSON null,反之亦然。改用它:

    >>> import json
    >>> json.dumps({'os-start': None})
    '{"os-start": null}'
    >>> json.loads('{"os-start": null}')
    {u'os-start': None}
    

    【讨论】:

    • 你肯定不会像以前那样给出任何错误。但是 openstack 服务器响应错误代码 400“BadRequest”,说“没有这样的操作:无”。 json.dumps 之后的数据是 '{"os-start":null}'。那么,为什么这不起作用?
    • @AkshayPatil:我不知道。从表面上看,JSON 对象的值无论如何都会被忽略(只有键似乎带有含义)。
    • 应该正确指定Content-Type,我现在发现了。发出请求时的“Content-Type:application/json”。现在可以了。
    【解决方案2】:

    可能有点离题,但由于您使用的是 openstack REST API,我也建议您查看libcloud,它有 openstack 驱动程序。

    Libcloud 不仅提供了统一的云端接口,还抽象了openstack REST API 的访问层

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 2015-06-18
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多