Поддерживает ли GAE ProtoRPC поле данных json для запроса - PullRequest
3 голосов
/ 08 февраля 2012

Я занимаюсь разработкой на python и GAE,

Когда я пытаюсь использовать ProtoRPC для веб-службы, я не могу найти способ, чтобы мой запрос содержал в сообщении данные в формате 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?

любое другое предложение?

1 Ответ

6 голосов
/ 09 февраля 2012

Что вы, вероятно, хотели бы сделать здесь, это использовать 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.

...