将同一层级下面的国标行业分类转换成父包含子的形式
2024-11-04 14:44:25 # 技术笔记

这是一开始的形式(部分)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[
{
"id": "A",
"name": "农、林、牧、渔业",
"pid": null,
"level": "0",
"desc": "本门类包括 01~05 大类"
},
{
"id": "A01",
"name": "农业",
"pid": "A",
"level": "1",
"desc": "指对各种农作物的种植"
},
{
"id": "A011",
"name": "谷物种植",
"pid": "A01",
"level": "2",
"desc": "指以收获籽实为主的农作物的种植,包括稻 谷、小麦、玉米等农作物的种植和作为饲料和工业原料的谷物的种植"
},
{
"id": "A0111",
"name": "稻谷种植",
"pid": "A011",
"level": "3",
"desc": null
},
{
"id": "A0112",
"name": "小麦种植",
"pid": "A011",
"level": "3",
"desc": null
},
{
"id": "A0113",
"name": "玉米种植",
"pid": "A011",
"level": "3",
"desc": null
},
{
"id": "A0119",
"name": "其他谷物种植",
"pid": "A011",
"level": "3",
"desc": null
},
{
"id": "A012",
"name": "豆类、油料和薯类种植",
"pid": "A01",
"level": "2",
"desc": null
}
]

然后将他们转换成这种形式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[
{
"id": "A",
"name": "农、林、牧、渔业",
"pid": null,
"level": "0",
"desc": "本门类包括 01~05 大类",
"children": [
{
"id": "A01",
"name": "农业",
"pid": "A",
"level": "1",
"desc": "指对各种农作物的种植",
"children": [
{
"id": "A011",
"name": "谷物种植",
"pid": "A01",
"level": "2",
"desc": "指以收获籽实为主的农作物的种植,包括稻 谷、小麦、玉米等农作物的种植和作为饲料和工业原料的谷物的种植",
"children": [
{
"id": "A0111",
"name": "稻谷种植",
"pid": "A011",
"level": "3",
"desc": null
},
{
"id": "A0112",
"name": "小麦种植",
"pid": "A011",
"level": "3",
"desc": null
}

下面是python代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 划分同一个数据下面的各种类别
import json

# 读取文件并解析 JSON 数据
def read_json_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
data = json.load(file)
return data

# 写入到 JSON 文件
def write_json_file(data, file_path):
with open(file_path, 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)

def build_hierarchy(categories):
# 创建一个空的字典列表,用于存储最终结果
result = []

# 创建字典,用于将分类按照 id 分组
category_map = {}
for category in categories:
category_map[category['id']] = category

# 遍历分类列表,构建分类树
for category in categories:
# 如果当前分类的 pid 为空,则将其视为一级分类
if category['pid'] is None:
result.append(category)
# 否则,将当前分类添加到其父分类的 children 列表中
else:
parent_id = category['pid']
parent_category = category_map.get(parent_id)
if parent_category is not None:
if 'children' not in parent_category:
parent_category['children'] = []
parent_category['children'].append(category)

return result




# 读取数据
categories = read_json_file('D:\ALL_Proj\PyCharm_Proj\pythonProjectDemo01\无标题.json')
# 构建分类树
result = build_hierarchy(categories)
# 写入数据
write_json_file(result, 'D:\ALL_Proj\PyCharm_Proj\pythonProjectDemo01\Aresult.json')

print("文件写入成功")