これら 2 つのキーと値のペアを含む辞書の場合:
str = StringProperty
time = DateTimeProperty
それを JSON にシリアライズし、データストアに保存してからフェッチし、元のプロパティにデシリアライズしたいと考えています。
これら 2 つのキーと値のペアを含む辞書の場合:
str = StringProperty
time = DateTimeProperty
それを JSON にシリアライズし、データストアに保存してからフェッチし、元のプロパティにデシリアライズしたいと考えています。
このようにしてみてください:
d = {
'str' : StringProperty,
'time' : unicode(DateTimeProperty)
}
s = simplejson.dumps(d)
print s
値が文字列の場合、これは簡単です。
>>> import simplejson
>>> print simplejson.dumps({'str': 'StringProperty', 'time': 'DateTimeProperty'})
{"str": "StringProperty", "time": "DateTimeProperty"}
ただし、値がカスタム クラス (Google App Engine の Property クラスなど) のオブジェクトである場合、それらは JSON でシリアル化できません。
JSON は、整数/浮動小数点数、ブール値、文字列、リスト/タプル、辞書などの単純なデータ型のみをシリアル化します。(詳細については、 http://www.json.org/を参照してください。)
JSON のシリアライズ可能な値を取得するには、単純なデータ型に変換する方法を定義する必要があります。たとえば、オブジェクトをクラス名と再構築に必要な引数を含むタプルに変換します。