相关疑难解决方法(0)

如何JSON序列化集?

我有一个set包含对象__hash____eq__方法的Python ,以确保集合中不包含任何重复项.

我需要对这个结果进行json编码set,但是将一个空值传递set给该json.dumps方法会引发一个问题TypeError.

  File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python2.7/json/encoder.py", line 178, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: set([]) is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

我知道我可以创建一个json.JSONEncoder具有自定义default方法的类的扩展,但我甚至不确定从哪里开始转换set.我应该set使用默认方法中的值创建字典,然后返回编码吗?理想情况下,我想使默认方法能够处理原始编码器所扼杀的所有数据类型(我使用Mongo作为数据源,所以日期似乎也引发了这个错误)

任何暗示正确的方向将不胜感激.

编辑:

谢谢你的回答!也许我应该更精确.

我在这里使用(和upvoted)答案来解决set被翻译的限制,但是内部键也是一个问题.

这些对象set是转换为的复杂对象__dict__,但它们本身也可以包含其属性的值,这些值可能不适用于json编码器中的基本类型.

这里有很多不同的类型set,哈希基本上计算了实体的唯一ID,但是在NoSQL的真正精神中,没有确切知道子对象包含的内容.

一个对象可能包含日期值 …

python serialization json set

138
推荐指数
9
解决办法
19万
查看次数

标签 统计

json ×1

python ×1

serialization ×1

set ×1