我需要使用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"
}
[我需要做一些类似于使用ldap3
库的事情,并从Flask
API返回JSON形式的响应。我在自己的搜索中找到了此条目,因此希望对其他人有所帮助。
您已经发现,entry_to_json()
方法将ldap3.abstract.entry.Entry
对象中的详细信息转换为JSON字符串。可以与ldap3.abstract.entry.Entry
内置库结合使用json
将其转换为Python字典。
在IDLE中使用您的示例,为简洁起见,跳过json
组件:
json.loads()