我在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?
还有其他任何建议吗?
答案 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仍然有帮助。