GAE ProtoRPC是否支持请求的json数据字段

Ton*_*Ton 3 google-app-engine protorpc

我正在开发python和GAE,

当我尝试使用ProtoRPC进行Web服务时,我找不到让我的请求在消息中包含json格式数据的方法.像这样的例子:

请求格式:

{"owner_id":"some id","jsondata":[{"name":"peter","dob":"1911-1-1","aaa":"sth str","xxx":sth int}, {"name":...}, ...]}'       
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

class some_function_name(messages.Message):
owner_id = messages.StringField(1, required=True)
jsondata = messages.StringField(2, required=True)      #is there a json field instead of StringField?
Run Code Online (Sandbox Code Playgroud)

还有其他建议吗?

小智 6

你可能想要做的是使用MessageField.您可以在类定义的上方或内部定义嵌套消息,并将其用作字段定义的第一个参数.例如:

class Person(Message):
    name = StringField(1)
    dob = StringField(2)

class ClassRoom(Message):
    teacher = MessageField(Person, 1)
    students = MessageField(Person, 2, repeated=True)
Run Code Online (Sandbox Code Playgroud)

或者:

class ClassRoom(Message):
    class Person(Message):
        ...
    ...
Run Code Online (Sandbox Code Playgroud)

这也会奏效.

不幸的是,如果你想要存储任意JSON,就像在任何类型的JSON数据中提前知道那样,那将无法工作.必须提前预定义所有字段.

我希望你使用MessageField仍然有帮助.