如何使用simplejson序列化并保持属性?

1 投票
2 回答
1621 浏览
提问于 2025-04-16 10:07

对于一个包含这两个键值对的字典:

str = StringProperty
time = DateTimeProperty

我想把它转换成JSON格式,存储到数据库里,然后再取出来,把它恢复成原来的样子。

2 个回答

0

如果你的值是字符串,那就简单了:

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

但是,如果这些值是来自自定义类的对象(比如谷歌应用引擎的属性类),那么它们就不能被转换成JSON格式。

JSON只能处理一些简单的数据类型,比如整数、浮点数、布尔值、字符串、列表/元组和字典。(想了解更多,可以查看http://www.json.org/

为了让值可以被转换成JSON格式,你需要定义一种方法,把它们转变为简单的数据类型。比如,可以把对象转换成一个包含类名和重建这些对象所需参数的元组。

2

试着这样做:

d = {
  'str'  : StringProperty,
  'time' : unicode(DateTimeProperty)
}
s = simplejson.dumps(d)
print s

撰写回答