Как использовать simplejson для сериализации и поддержки свойств? - PullRequest
1 голос
/ 17 января 2011

Для словаря, содержащего эти две пары ключ-значение:

str = StringProperty
time = DateTimeProperty

Я хочу сериализовать его в JSON, сохранить в хранилище данных, а затем извлечь и десериализовать в исходные свойства.

Ответы [ 2 ]

2 голосов
/ 17 января 2011

Попробуйте сделать так:

d = {
  'str'  : StringProperty,
  'time' : unicode(DateTimeProperty)
}
s = simplejson.dumps(d)
print s
0 голосов
/ 17 января 2011

Это просто, если ваши значения являются строками:

>>> import simplejson
>>> print simplejson.dumps({'str': 'StringProperty', 'time': 'DateTimeProperty'})
{"str": "StringProperty", "time": "DateTimeProperty"}

Однако, если значения являются объектами из пользовательских классов (например, классов свойств Google App Engine), они не сериализуются в JSON.*

JSON сериализует только простые типы данных, такие как целые числа / числа с плавающей запятой, логические значения, строки, списки / кортежи и словари.(Подробнее см. http://www.json.org/.)

Чтобы иметь сериализуемые значения JSON, вам нужно определить способ преобразования их в простые типы данных.Например, преобразование объектов в кортеж, содержащий имя класса и аргументы, необходимые для их перестроения.

...