我正在将 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/

10-15 20:59