python - 如何将 ldap3 条目处理为 json 或列表以进行进一步的数据处理?
问题描述
我需要使用 LDAP 从服务器获取数据。我正在使用 ldap3 并且正在获取我需要的所有属性和响应,但是它们被困在 ldap.abstract.entry.entry 类中。我尝试了几种方法将数据转换为 json 或列表形式,但它从来没有像我预期的那样工作。
例如我试过:
entry = conn.entries
current_data = (entry.entry_to_json())
print(type(current_data))
print(len(current_data))
>>> <class 'str'>
>>> 480
然而,这导致我所有的数据都是长度为 480 或更长的单个字符串。我尝试过使用它,但事实证明这非常困难。所以我尝试了以下方法将字符串转换为字典:
current_data = (entry[0].entry_to_json())
current_data = ast.literal_eval(current_data)
print(type(current_data))
print(len(current_data))
>>> <class 'dict'>
>>> 2
但是,现在我无法单独访问所有不同的属性。我的目标是将我从 LDAP 查询中获得的所有数据写入 CSV,以便其他应用程序可以使用它。但目前我被困住了,因为我无法将数据转换为 JSON 或 CSV 格式。
如何从 中获取和处理数据,conn.entries
以便将每个属性写入 CSV 中的单独列?
最好的祝愿,
C.泽布
编辑:
这是我使用时得到的示例(entry.entry_to_json())
:
{
"attributes": {
"dcxLDOUniqueCN": [
"XXXX"
],
"dcxPostalAddress": [
"XXX"
],
"dcxSupervisor": [
"XXX"
],
"mail": [
"XXX"
],
"mobile": [],
"uid": [
"XXX"
]
},
"dn": "XXX"
}
{
"attributes": {
"dcxLDOUniqueCN": [],
"dcxPostalAddress": [
"XXX"
],
"dcxSupervisor": [
"XXX"
],
"mail": [],
"mobile": [],
"uid": [
"XXX"
]
},
"dn": "XXX"
}
解决方案
我知道已经晚了,但万一其他人正在寻找这个......
来自https://ldap3.readthedocs.io/en/latest/searches.html#entries
属性存储在不区分大小写访问的内部字典中。您甚至可以使用 entry_raw_attribute(attribute_name) 访问原始属性以获取属性原始值,或使用属性 entry_raw_attributes 获取整个原始属性字典。
所以entry.entry_raw_attributes
会给你你想要的字典。
推荐阅读
- javascript - 什么事件会触发点击释放-Javascript/Reactjs
- http - 是否应该有最大 HTTP 请求大小 - 标准是什么?
- linux - 循环 0xb7 组装但不会链接
- django - django + nginx on docker bad request (400)
- latex - 乳胶中引用的出现顺序
- ios - 您可以使用 Swift 在一条语句中聚合非规范化的解析服务器查询结果吗?
- python - 将单个值从一列复制到满足条件的另一列
- php - 我正在寻找广告代码,在第二次访问时运行
- javascript - 使用 jQuery.validate 禁用表单字段时的 ASP.NET Core 视图模型
- python-3.x - 如何遍历 DataFrame 中的行,计算一个值并使用此 lambda 函数将该值放入一个新列中