布尔序列化和区分大小写的 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
对象需要真实的 bool
s.
不要依赖 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
我遇到了区分大小写的 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
对象需要真实的 bool
s.
不要依赖 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