1.概述
以最深的树节点为准,分步骤获取字段值,当前步骤的数据须全部按照节点序号平铺至下一步骤,且取最后一个步骤所有的行为目标数据。
2.定义字段
以下json为例:
{
“store_name”: “我的杂书店”,
“business_scope”: “图书、杂志”,
“categories”: [{
“category_name”: “图书”,
“books”: [{
“book_name”: “红楼梦”,
“author”: “曹雪芹”,
“tag”: “古典文学、四大名著、章回体小说”
}, {
“book_name”: “平凡的世界”,
“author”: “路遥”,
“tag”: “当代文学、矛盾文学奖”
}, {
“book_name”: “源氏物语”,
“author”: “紫式部”,
“tag”: “日本名著、古典文学”
}, {
“book_name”: “霍乱时期的爱情”,
“author”: “马尔克斯”,
“tag”: “南美文学、诺贝尔文学奖”
}]
}, {
“category_name”: “杂志”,
“books”: [{
“book_name”: “时代周刊”,
“author”: “时代周刊出版社”,
“tag”: “全球权威刊物”
}, {
“book_name”: “知音”,
“author”: “知音出版社”,
“tag”: “知音”
}, {
“book_name”: “读者”,
“author”: “读者出版社”,
“tag”: “读者”
}, {
“book_name”: “计算机爱好者”,
“author”: “清华大学机械出版社”,
“tag”: “计算机”
}]
}]
}
2.1.定义字段
target_column fetch_path sort_num execute_step
store_name $…store_name 1 1
business_scope $…business_scope 2 1
category_name $…categories[].category_name 3 2
book_name
.
.
c
a
t
e
g
o
r
i
e
s
[
..categories[
..categories[{num}].books[].book_name 4 3
author
.
.
c
a
t
e
g
o
r
i
e
s
[
..categories[
..categories[{num}].books[].author 5 3
tag
.
.
c
a
t
e
g
o
r
i
e
s
[
..categories[
..categories[{num}].books[].tag 6 3
target_column,目标字段名
fetch_path,json路径,符合jsonPath语法
sort_num,字段序号,从1开始
execute_step,取值步骤,从1开始,必须连续取值,如:1、2、3,不能1、2、4。
3.算法
3.1.获取取值的深度
即获取execute_step的最大值即可;
3.2.按步骤取值
3.2.1.取第一层数据
按fetch_path获取每一个字段的值,且保留至第一步骤中。
3.2.2.其它步骤取值
检查上一步骤有无子集,若有,则按子集序号分别合并对应的当前行。
3.3.取最后一个步骤的数据
demo地址:https://github.com/leichuansheng/Tree2Line.git