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

Boolean serialization and case-sensitive REST API's

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

如何应对?在将它们提供给 requests 之前,我应该预先序列化所有 bools 还是有更清洁的方法?

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

除非 params 很大,return 修改后的副本,而不是改变输入,以防万一代码的其他部分使用相同的 params 对象需要真实的 bools.

不要依赖 str(v) return 特定的字符串。将 明确地放在代码中还记录了您需要那些特定的字符串。

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