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

时间:2012-02-08 12:58:48

标签: 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":...}, ...]}'       

蟒:

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?

还有其他任何建议吗?

1 个答案:

答案 0 :(得分:6)

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

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

class ClassRoom(Message):
    teacher = MessageField(Person, 1)
    students = MessageField(Person, 2, repeated=True)

可替换地:

class ClassRoom(Message):
    class Person(Message):
        ...
    ...

这也会奏效。

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

我希望您使用MessageField仍然有帮助。