3

我正在 python 和 GAE 上进行开发,

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

请求格式:

{"owner_id":"some id","jsondata":[{"name":"peter","dob":"1911-1-1","aaa":"sth str","xxx":sth int}, {"name":...}, ...]}'       

Python:

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?

还有其他建议吗?

4

1 回答 1

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对你还是有帮助的。

于 2012-02-08T21:35:47.683 回答