Python3 将 'CaseInsensitiveDict' 转换为 JSON
Python3 Convert 'CaseInsensitiveDict' to 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)
我正在研究我认为是一个简单的问题,但它真的很困惑。我正在使用 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)