我遇到了一个区分大小写的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()
答案 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