json - Python3 将 'CaseInsensitiveDict' 转换为 JSON

标签 json python-3.x dictionary ldap3

我正在研究我认为是一个简单的问题,但它真的很困惑。我正在使用 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)

关于json - Python3 将 'CaseInsensitiveDict' 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60711257/

相关文章:

python - 使用 Python 将多个字典写入带有一个 header 的 CSV

javascript - JS 对象到 JSON 字符串?

java - 将远程数据库中的 JSON 解析到 Android ListView

json - 在对行执行删除操作后使用 table.ajax.reload() 时,表不会刷新

python - 字典的稀疏数组 - 高效表示

java - Java 中的多键到单值映射

python - 将 mysql jobstore 与 Flask Sqlalchemy 一起使用时如何处理数据库断开连接

Python Shutil 模块复制树

python - 用python绘制电容器板之间的电子偏转

c - 在哪里可以找到 C++ STL 映射的 C 实现?