如何使Python类可序列化?
一个简单的类:
class FileItem:
def __init__(self, fname):
self.fname = fname
我应该怎么做才能获得输出:
>>> import json
>>> my_file = FileItem('/foo/bar')
>>> json.dumps(my_file)
TypeError: Object of type 'FileItem' is not JSON serializable
没有错误
您对预期的输出有想法吗?例如,这样做吗?
>>> f = FileItem("/foo/bar")
>>> magic(f)
'{"fname": "/foo/bar"}'
在这种情况下,您只能致电json.dumps(f.__dict__)
。
如果您想要更多的自定义输出,则必须继承JSONEncoder
并实现自己的自定义序列化。
有关一个简单的示例,请参见下文。
>>> from json import JSONEncoder
>>> class MyEncoder(JSONEncoder):
def default(self, o):
return o.__dict__
>>> MyEncoder().encode(f)
'{"fname": "/foo/bar"}'
然后,将该类json.dumps()
作为cls
kwarg
传递给方法:
json.dumps(cls=MyEncoder)
如果你也想解码,那么你将有一个自定义供应object_hook
给JSONDecoder
类。例如:
>>> def from_json(json_object):
if 'fname' in json_object:
return FileItem(json_object['fname'])
>>> f = JSONDecoder(object_hook = from_json).decode('{"fname": "/foo/bar"}')
>>> f
<__main__.FileItem object at 0x9337fac>
>>>
问题内容: 如何使Python类可序列化? 一个简单的类: 我应该怎么做才能获得以下输出: 没有错误 问题答案: 你对预期的输出有想法吗?例如这样做吗? 在这种情况下,你只能致电。 如果你想要更多的自定义输出,则必须继承并实现自己的自定义序列化。 有关一个简单的示例,请参见下文。 然后,将该类作为传递给方法: 如果你也想解码,那么你将有一个自定义供应给类。例如
问题内容: 如何使类可序列化? 一个简单的类: 我应该怎么做才能获得以下输出: 问题答案: 你对预期的输出有想法吗?例如这样做吗? 在这种情况下,你只能致电。 如果你想要更多的自定义输出,则必须继承并实现自己的自定义序列化。 有关一个简单的示例,请参见下文。 然后,将该类作为 传递给方法: 如果你也想解码,那么你将有一个自定义供应类。例如
本文向大家介绍如何在Python中创建可序列化的JSON类?,包括了如何在Python中创建可序列化的JSON类?的使用技巧和注意事项,需要的朋友参考一下 序列化是将复杂数据类型的对象转换为本地数据类型的过程,以便可以轻松地将它们转换为JSON表示法。 如果您有JSON字符串,则可以使用json.dumps()方法将其转换为JSON字符串。 Python pickle模块用于对Python对象结
问题内容: 我很好奇序列化和反序列化的方式。我使用关键字“ json”和“ tuple”进行搜索,但找不到所需的内容。 问题答案: 我通过和Json.net进行测试,测试代码如下。结果显示可序列化和可反序列化。因此,我可以在应用程序中使用它们。 测试代码 注释 在将序列化到字符串{“项目1”:“一”,“项目2”:“嘻嘻”,“项目3”:真正},并且它可以被反序列化回类型。
问题内容: 我有以下用于序列化查询集的代码; 以下是我的 我需要序列化。但是它说无法序列化。因为列表由Django对象和字典组成。有任何想法吗 ? 问题答案: 并且不能很好地与Django对象配合使用。 Django的内置序列化器只能序列化由django对象填充的查询集: 在您的情况下,其中包含django对象和dict的混合。 一种选择是摆脱中的模型实例,并使用dict将其替换为: 希望有帮助。
问题内容: 在使用Python查询文档上的聚合函数后,我从MongoDB返回了响应,它返回有效响应,我可以打印该响应但不能返回它。 错误: 打印: 但是当我尝试返回时: 这是RESTfull调用: 数据库连接良好,集合也在那里,我得到了有效的预期结果,但是当我尝试返回时,它给了我Json错误。任何想法如何将响应转换回JSON。谢谢 问题答案: 您应该定义自己并使用它: 也可以按以下方式使用它。