假设我有一个由原始dict组成的自定义数据结构。我需要使用JSON序列化这个。我的结构如下:
path_list_dict = {(node1, node2 .. nodeN): (float1, float2, float3)}
所以这是用一个元组键控的,这个值是一个由三个值组成的元组。键中的每个node元素都是一个自定义类对象,其中有一个为其编写的str方法。包装dict用一个键标识path_list_dict中的每个dict条目,如下所示:
^{pr2}$等等。在
当我尝试使用JSON序列化它时,当然会遇到TypeError,因为内部dict将元组作为键和值,dict需要将键作为字符串进行序列化。通过在dict中插入str(tuple)表示而不仅仅是本机元组,可以很容易地解决这个问题。在
我关心的是,当我接收它并解包这些值时,我将在接收端拥有所有字符串。由自定义类元素组成的内部dict的键元组现在表示为str。我可以恢复嵌入的数据吗?或者这是其他更好的方法吗?在
为了更清楚,我使用这个JSON tutorial作为参考。在
您有几种选择:
使用自定义密钥前缀序列化,您可以选择该前缀并再次取消序列化:
将生成
^{pr2}$'__tuple__(node1,node2,nodeN)'
作为键,您可以将其解析回另一端的元组:演示:
不要使用字典,使用列表:
您可以简单地从
dict.items()
结果生成这样一个列表:在解码时,将整个过程反馈给
dict()
,同时将每个键值列表映射到元组:后一种方法也更适合自定义类,因为^{} method 仍将被交给这些自定义对象,以便您将其序列化回合适的dictionary对象,这意味着传递给^{} 的合适的
object_hook
有机会再次为这些对象返回完全反序列化的自定义对象。在相关问题 更多 >
编程相关推荐