我正在将 Thrift 用于用 python 编写的微服务。
我在 python 中返回一个字典,它可以包含 NULL
值。
这是我的 Python 响应处理程序的代码:
def response(id, token):
user_record = usertable.objects.get(uid = id)
if user_record.token == token:
response = dict(
pa_uid = user_record.pa_uid,
pa_token = user_record.pa_token,
dev_id = user.dev_id
)
return response
response
函数是返回一个字典,在许多情况下 dev_id
键有一个 NULL
值。我怎样才能在 Thrift 中处理这个问题?
这是我的 Thrift 文件中的代码:
service Calculator extends shared.SharedService {
map<string,string> response(1:string id, 2:string token),
}
当
dev_id
键具有 NULL
值时,Thrift 不会返回字典,并且 Thrift 客户端会抛出错误。 最佳答案
有两种方法可以做到这一点:
三元条件运算符
您可以在 dev_id
赋值中使用三元条件运算符。
dev_id = user.dev_id if user.dev_id != None else 'not_found'
现在您可以检查字典中的“not_found”值并进行适当处理。
or
逻辑运算符 另一种选择是在赋值中使用
or
作为 Tom Barron 的回答dev_id = user.dev_id or 'no_dev'
注意:
or
的使用并不能消除极端情况,即 user.dev_id
在数字的情况下可以具有像 0
这样的假值或在字符串的情况下为空字符串。此类虚假值将触发 or
并将 'no_dev'
分配给 dev_id
。如果需要保留此类虚假值,则使用三元条件运算符。关于python - 通过 Thrift 返回 Python 字典时如何处理 "Null"值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37363278/