3

私はPythonとGAEで開発を行っていますが、

Webサービスに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?

他の提案はありますか?

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 に答える