布尔序列化和区分大小写的REST API

时间:2015-01-22 10:11:04

标签: python python-requests urllib

我遇到了一个区分大小写的REST API(Pingdom)。 Python的urllib将所有布尔值序列化为“True”或“False”。但是,API只接受小写的“true”和“false”,这与JSON输出一致。

如何应对这个?我应该预先序列化所有bool,然后再将它们送到requests,还是有更干净的方式?

def _serializeBooleans(params):
    for k, v in params.iteritems():
        if isinstance(v, bool):
            params[k] = str(v).lower()

1 个答案:

答案 0 :(得分:3)

除非params很大,否则返回修改后的副本,而不是改变输入,以防使用相同params对象的代码的其他部分需要真正的bool。< / p>

不要依赖str(v)返回特定字符串。明确地将代码放在代码中也是需要那些特定字符串的文档。

def prepare_params(params):
    prepared = {}
    for name, value in params.iteritems():
        if value is True:
            value = 'true'
        elif value is False:
            value = 'false'
        prepared[name] = value
    return prepared