gpt4 book ai didi

python - protoRPC:返回字典

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:47 25 4
gpt4 key购买 nike

如何通过 protoRPC 返回一个类似 dict 的对象?

我尝试使用 FieldList 无济于事。我只看到以下字段定义:

       'IntegerField',
'FloatField',
'BooleanField',
'BytesField',
'StringField',
'MessageField',
'EnumField',

最佳答案

有两种情况:

1) 您的 dict 有一个明确定义的架构:这是 ProtoRPC 的最佳用例,如果可能,您应该尝试将其放入架构中。在这种情况下,您将使用 MessageField 和一些与字典中的架构匹配的 Message 类。

例如,代替

{'amount': 31, 'type': 'fish', mine: False}

你可以定义

from protorpc import messages
class MyCatch(messages.Message):
amount = messages.IntegerField(1)
type = messages.StringField(2)
mine = messages.BooleanField(3)

然后通过

在字段中使用此消息定义
messages.MessageField(MyCatch, index, ...)

2) 你的 dict 没有明确定义的模式: 在这种情况下你可以使用 json 将你的字典转储到一个string 并请求 ensure_ascii=True 以确保返回类型是字节 (str) 对象。然后你可以只使用 BytesField

例如:

import json

class MyMessage(messages.Message):
some_dict = messages.BytesField(1)

my_dict = {'amount': 31, 'type': 'fish', mine: False}
message = MyMessage(some_dict=json.dumps(my_dict, ensure_ascii=True))

ensure_ascii 的使用是可选的,因为 True 是默认设置,但这可能会根据您的环境而改变。

相反,您可以使用 pickle 来序列化您的字典。 pickle.dumps 方法始终输出 ASCII/二进制,因此通过将 json.dumps 换成 pickle.dumps 并删除 ensure_ascii =True,你会得到相同的结果。

关于python - protoRPC:返回字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com