我正在研究我认为将是一个简单问题的方法,但确实感到困惑。我正在使用ldap3模块在Python中进行广告查询。此查询返回的数据作为python词典的生成器。当我对数据运行type()
命令时,它确认它是一个字典。
我需要将其转换为JSON,以便可以将其写入日志文件。首先,我尝试了json.dump(data,file)
,但是当我这样做时,我收到此错误:TypeError:类型为'CaseInsensitiveDict'的对象不是JSON可序列化的
如果我尝试将字典转换为字符串,则首先用引号将数据写入,而内部字段则用单引号引起,因此它不是真正的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
我一直在搜索互连网,并且使用request
模块可以看到很多关于此问题的信息,但似乎没有什么可以解决我的问题。
有了ldap3模块,就有了一个我在其他脚本中使用过的方法entry_to_json()
。由于生成器,它似乎在这里不起作用,如果有人知道如何再次执行该工作,则可以解决我的问题。有什么想法吗?
问题来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
尝试将CaseInsensitiveDict转换为普通的旧dict,如下所示:
json.dump(dict(data), file)
如果存在嵌套的CaseInsensitiveDict,则此方法不起作用。您必须从内到外将它们递归地转换为dict。
回答来源:stackoverflow