Я работаю над тем, что, как я предполагал, будет простой проблемой, но это действительно запутало. Я делаю запрос AD в Python с использованием модуля ldap3 . Этот запрос возвращает данные как генератор словарей 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()
, который я использовал в других скриптах. Кажется, он не работает здесь из-за генератора, если кто-нибудь знает, как заставить его работать снова, это может решить мою проблему. Мысли?