python – protoRPC:返回dict

python – protoRPC:返回dict,第1张

概述如何通过protoRPC返回类似对象的dict? 我尝试使用FieldList无济于事.我只看到以下字段定义: 'IntegerField', 'FloatField', 'BooleanField', 'BytesField', 'StringField', 'MessageField', 'EnumField' 如何通过protoRPC返回类似对象的dict?

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

'IntegerFIEld','floatFIEld','BooleanFIEld','BytesFIEld','StringFIEld','MessageFIEld','EnumFIEld',
解决方法 有两种情况:

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

例如,而不是

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

你可以定义

from protorpc import messagesclass MyCatch(messages.Message):  amount = messages.IntegerFIEld(1)  type = messages.StringFIEld(2)  mine = messages.BooleanFIEld(3)

然后在字段via中使用此消息定义

messages.MessageFIEld(MyCatch,index,...)

2)您的dict没有明确定义的模式:在这种情况下,您可以使用Json将字典转储为字符串并请求ensure_ascii = True以确保返回类型是字节(str)对象.然后你可以使用BytesFIEld.

例如:

import Jsonclass MyMessage(messages.Message):   some_dict = messages.BytesFIEld(1)my_dict = {'amount': 31,mine: False}message = MyMessage(some_dict=Json.dumps(my_dict,ensure_ascii=True))

Ensure_ascii的使用是可选的,因为True是默认值,但这可能会根据您的环境而改变.

相反,你可以使用pickle来序列化你的字典.方法pickle.dumps总是输出ASCII /二进制,所以通过交换pickle.dumps的Json.dumps并删除ensure_ascii = True,你会得到相同的结果.

总结

以上是内存溢出为你收集整理的python – protoRPC:返回dict全部内容,希望文章能够帮你解决python – protoRPC:返回dict所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存