从JSON文件创建可视树

时间:2018-06-18 13:21:55

标签: python json tree

有很多关于如何在JSON文件中创建树的信息,但有没有办法可视化从JSON文件到任何可视界面,图片或终端的依赖关系作为树(如图片)?

从另一篇文章中偷走了这些图片

Tree 1

Tree 2

我的代码是从数据库生成JSON(我使用Radom模块生成parentID):

    emp = []
for item in root.iter('empl'):
        name_tag = {'name': '', 'dep': '', 'Title': '', 'email': '', 'id': int(item.attrib['id'])}
        for data in item.iter('field'):
            if data.attrib['id'] == 'displayName':
                name_tag['name'] = data.text
            elif data.attrib['id'] == 'dep':
                name_tag['dep'] = data.text
            elif data.attrib['id'] == 'Title':
                name_tag['Title'] = data.text
            elif data.attrib['id'] == 'Email':
                name_tag['email'] = data.text
            elif data.attrib['id'] == 'id':
                name_tag['id'] = data.text
            else:
                continue
        emp.append(name_tag)


session_factory = sessionmaker(engine)
session = session_factory()


emp_list = [TableName(name=item['name'], department=item['dep'], Title=item['Title'], email=item['email'], id=item['id']) for item in employees]
avoid_duplicates = list(connection.execute('select * from TableName'))


for i in emp_list:
    if i.name not in [j[1] for j in avoid_duplicates]:
        session.add(i)

session.commit()

write_list = [{'id': i[0], 'name': i[1], 'dep': i[2], 'Title': i[3], 'email': i[4]} for i in list(connection.execute('select * from TableName'))]

session.close()
connection.close()


for randomID in write_list:
    randomID['parentId'] = random.randrange(0, 487, 2)

with open('data.json', 'w') as file:
    json.dump(write_list, file)

这些JSON看起来像是:

{
    "id": 9,
    "name": "Name1",
    "dep": "dep",
    "Title": "title",
    "email": "email",
    "parentId": 408
},
{
    "id": 10,
    "name": "Name2",
    "dep": "dep",
    "Title": "title",
    "email": "email",
    "parentId": 316
},
{
    "id": 12,
    "name": "Name3",
    "dep": "dep",
    "Title": "title",
    "email": "email",
    "parentId": 160
}

有什么方法可以将'id - parentID'关系可视化为可视树?

0 个答案:

没有答案
相关问题