google云端点消息。消息到json python
如何在用于Google云端点框架的python 2.7中将消息解码为JSON?特别是当我们有一些嵌套消息时。 端点版本: 谷歌端点==2.4.5和谷歌端点api管理==1.3.0 我试图在消息定义中添加“to_json”方法,但出现“MessageDefinitionError:只能使用消息定义中的字段。”异常google云端点消息。消息到json python,python,google-app-engine,google-cloud-endpoints-v2,Python,Google App Engine,Google Cloud Endpoints V2,如何在用于Google云端点框架的python 2.7中将消息解码为JSON?特别是当我们有一些嵌套消息时。 端点版本: 谷歌端点==2.4.5和谷歌端点api管理==1.3.0 我试图在消息定义中添加“to_json”方法,但出现“MessageDefinitionError:只能使用消息定义中的字段。”异常 这看起来像是一个基本的手术,但不是那么容易。Python SDK需要对这一部分进行巨大的改进。我最终开发了自己的解决方案,代码如下: def request_to_json(reques
这看起来像是一个基本的手术,但不是那么容易。Python SDK需要对这一部分进行巨大的改进。我最终开发了自己的解决方案,代码如下:
def request_to_json(request):
"""
Take a coming request (POST) and
get JSON.
"""
json_dict = {}
for field in request.all_fields():
if field.__class__.__name__ == 'MessageField':
data = getattr(request, field.name)
if data:
if data.__class__.__name__ == 'FieldList':
json_dict.update({
field.name: [request_to_json(data[i]) for i in range(len(data))]
})
else:
json_dict.update({
field.name: request_to_json(data)
})
else:
json_dict.update({
field.name: getattr(request, field.name)
})
return json_dict
它考虑嵌套的消息字段、列表字段和基本字段。
我在POST请求上对其进行了测试,效果良好。我最终开发了自己的解决方案,代码如下:
def request_to_json(request):
"""
Take a coming request (POST) and
get JSON.
"""
json_dict = {}
for field in request.all_fields():
if field.__class__.__name__ == 'MessageField':
data = getattr(request, field.name)
if data:
if data.__class__.__name__ == 'FieldList':
json_dict.update({
field.name: [request_to_json(data[i]) for i in range(len(data))]
})
else:
json_dict.update({
field.name: request_to_json(data)
})
else:
json_dict.update({
field.name: getattr(request, field.name)
})
return json_dict
它考虑嵌套的消息字段、列表字段和基本字段。
我在POST请求上测试了它,效果很好。您应该使用内置的端点JSON代码。这并不准确,但大致如下:
from endpoints import protojson
p = protojson.EndpointsProtoJson()
p.decode_message(Address, '{...}')
您应该使用内置的端点JSON代码。这并不准确,但大致如下:
from endpoints import protojson
p = protojson.EndpointsProtoJson()
p.decode_message(Address, '{...}')