json树转成行记录

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值