google云端点消息。消息到json python

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

如何在用于Google云端点框架的python 2.7中将消息解码为JSON?特别是当我们有一些嵌套消息时。 端点版本:

谷歌端点==2.4.5谷歌端点api管理==1.3.0

我试图在消息定义中添加“to_json”方法,但出现“MessageDefinitionError:只能使用消息定义中的字段。”异常


这看起来像是一个基本的手术,但不是那么容易。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, '{...}')