Python3 将"CaseInsensitive Dict"转换为JSON。



我正在处理一个我认为很简单的问题,但它真的很困惑。我正在使用ldap3模块在Python中进行AD查询。此查询将数据作为python字典的生成器返回。当我对数据运行type()命令时,它会确认它是一个字典。

我需要将其转换为JSON,以便将其写入日志文件。首先,我尝试了json.dump(data, file),但当我这样做时,我收到了这个错误:TypeError: Object of type 'CaseInsensitiveDict' is not JSON serializable

如果我先尝试将字典转换为字符串,那么数据是用引号写的,内部字段是用单引号留下的,所以它不是真正的JSON——结果是这样的:"{'key': 'value'}"

这是我所拥有的:

with open(outfile, 'w') as outfile:
for entry in entry_generator: # Entry is equal to a dictionary of AD attributes
json.dump(entry, outfile) # I have also tried json.dump(str(entry), outfile) etc

我一直在网上搜索,我在requests模块中看到了很多关于这个问题的信息,但似乎没有什么能解决我的问题。

有了ldap3模块,我在其他脚本中使用了一个方法entry_to_json()。由于发电机的原因,它在这里似乎不起作用,如果有人知道如何让它再次起作用,它可以解决我的问题。想法?

尝试将CaseInsensitiveDict转换为普通的旧dict,如下所示:

json.dump(dict(data), file)

最新更新