标签导航:

本文介绍如何将mysql的企业-部门-职位数据转换为树形结构的json。 给定一个包含企业、部门和职位信息的表格,目标是生成一个分层结构的json,其中企业包含部门,部门包含职位。

如何将MySQL企业-部门-职位数据转换为树形结构JSON?

数据表结构:

company company_name dept dept_name job job_name
c1 企业a d1 财务部 j1 财务主管
c1 企业a d1 财务部 j2 会计
c1 企业a d2 技术部 j21 java
c1 企业a d2 技术部 j22 js
c2 企业b d20 销售部 j20 销售员

目标JSON结构:

[
  {
    "code": "C1",
    "name": "企业A",
    "departments": [
      {
        "code": "d1",
        "name": "财务部",
        "jobs": [
          {"code": "j1", "name": "财务主管"},
          {"code": "j2", "name": "会计"}
        ]
      },
      {
        "code": "d2",
        "name": "技术部",
        "jobs": [
          {"code": "j21", "name": "Java"},
          {"code": "j22", "name": "JS"}
        ]
      }
    ]
  },
  {
    "code": "C2",
    "name": "企业B",
    "departments": [
      {
        "code": "d20",
        "name": "销售部",
        "jobs": [{"code": "j20", "name": "销售员"}]
      }
    ]
  }
]

实现方法:使用两个HashMap

可以使用两个HashMap来高效地实现数据转换:一个用于存储企业信息,另一个用于存储部门信息。 遍历数据表中的每一行,根据企业和部门代码构建树形结构。

  1. 遍历记录: 逐行读取MySQL数据表中的记录。
  2. 处理企业: 使用company作为键,检查企业HashMap中是否存在该企业。如果不存在,创建一个新的企业对象,并将其添加到企业HashMap和结果JSON数组中。
  3. 处理部门: 使用dept作为键,检查部门HashMap中是否存在该部门。如果不存在,创建一个新的部门对象,并将其添加到对应的企业对象的departments数组和部门HashMap中。
  4. 处理职位: 创建一个新的职位对象,并将其添加到对应的部门对象的jobs数组中。

这种方法避免了嵌套循环,提高了效率,尤其是在处理大量数据时。 最终,结果JSON数组将包含完整的树形结构数据。