【发布时间】:2016-04-05 12:53:06
【问题描述】:
我正在使用 json.dumps 转储我创建的类。有两个列表数据成员,一个从未使用,但一个用于管理另一个数据成员列表的构建。生成的 JSON 中不存在从未使用的列表,但即使我从这些对象列表中的每个对象实例中清除它,也会添加使用的列表。我不希望 JSON 中有这个空列表。
在我返回要传递给转储的列表之前,我会这样做
for entry in self.endpointList:
entry.attributeNameList.clear()
我也尝试在自己的 JSONEncoder 中进行清除。当我在调试器中查看attributeNameList 成员时,它们会被清除,但它们是由转储作为空数组发出的。其他未触及的空列表永远不会显示。
另一个区别是不显示的空列表以相同的方式声明,但attributeNameList在我的类的__init__方法中初始化。
class ProvisioningEndpoint:
attributeList = []
attributeNameList = []
def __init__(self, record):
self.attributeNameList = list()
有没有办法防止这个特定的空列表被转换为
"attributeNameList": []
attributeList 永远不会添加到 JSON 输出中。
从未使用过的列表和已清除的列表在调试器中看起来完全一样——空的。 Python 可能在列表中有一个脏位,并使用它来决定何时以 JSON 形式发出。 谢谢。
这是编码器代码(根据要求)
class ServiceRegistryEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, (ProvisioningEndpoint,endpointAttribute)):
obj = obj.__dict__
【问题讨论】:
标签: python json python-3.x