如何使用simplejson来序列化和维护属性?

发布于 2024-10-12 07:27:30 字数 145 浏览 6 评论 0原文

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

str = StringProperty
time = DateTimeProperty

我想将其序列化为 JSON,将其存储在数据存储中,然后获取它,并将其反序列化为原始属性。

For a dictionary containing these two key-value pairs:

str = StringProperty
time = DateTimeProperty

I want to serialize it to JSON, store it in the Datastore, and then fetch it, and deserialize it into the original properties.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狼性发作 2024-10-19 07:27:31

如果您的值是字符串,这很简单:

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

但是,如果值是来自自定义类(例如 Google App Engine 属性类)的对象,则它们不可 JSON 序列化。

JSON 仅序列化简单数据类型,例如整数/浮点数字、布尔值、字符串、列表/元组和字典。 (有关更多详细信息,请参阅 http://www.json.org/。)

为了具有 JSON 可序列化值,您需要定义一种方法将它们转换为简单数据类型。例如,将对象转换为包含类名和重建它们所需的参数的元组。

This is simple if your values are strings:

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

However, if the values are objects from custom classes (such as the Google App Engine Property classes), they are not JSON serializable.

JSON only serializes simple data types, such as integer/float numbers, booleans, strings, lists/tuples and dictionaries. (See http://www.json.org/ for further details.)

In order to have JSON serializable values, you need to define a way to convert them to simple data types. For example, transforming objects to a tuple containing the class name and the arguments necessary to rebuild them.

千柳 2024-10-19 07:27:30

尝试这样做:

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

Try to do it this way:

d = {
  'str'  : StringProperty,
  'time' : unicode(DateTimeProperty)
}
s = simplejson.dumps(d)
print s
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文