问题描述
嗨,我是 JOLT 转换的新手,我正在尝试转换如下内容。
这里的主要目标是拥有一个对象列表,而无需在 jolt 中进行常量索引。
不同对象到公共列表的转换。
感谢任何帮助。
此处提供的数据是我所期望的示例。
输入:
{
"CIT": [
{
"name": "name_CIT_1","desc": "desc_CIT_1"
},{
"name": "name_CIT_2","desc": "desc_CIT_2"
},{
"name": "name_CIT_3","desc": "desc_CIT_3"
}
],"BIT": {
"name": "name_BIT","desc": "desc_BIT"
},"NIT": {
"name": "name_NIT","desc": "desc_NIT"
},"KIT": {
"name": "name_KIT","desc": "desc_KIT"
}
}
震动:
[
{
"operation": "modify-default-beta","spec": {
"*": {}
}
},{
"operation": "modify-overwrite-beta","spec": {}
},{
"operation": "shift","spec": {
"CIT": {
"*": {
"name": "CollegeList[0].name","desc": "CollegeList[0].desc"
}
},"BIT": {
"name": "CollegeList[1].name","desc": "CollegeList[1].desc"
},"NIT": {
"name": "CollegeList[2].name","desc": "CollegeList[2].desc"
},"KIT": {
"name": "CollegeList[3].name","desc": "CollegeList[3].desc"
}
}
}
]
输出:
{
"CollegeList" : [ {
"name" : [ "name_CIT_1","name_CIT_2","name_CIT_3" ],"desc" : [ "desc_CIT_1","desc_CIT_2","desc_CIT_3" ]
},{
"name" : "name_BIT","desc" : "desc_BIT"
},{
"name" : "name_NIT","desc" : "desc_NIT"
},{
"name" : "name_KIT","desc" : "desc_KIT"
} ]
}
预期输出:
{
"CollegeList": [
{
"name": "name_CIT_1","desc": "desc_CIT_3"
},{
"name": "name_BIT","desc": "desc_BIT"
},{
"name": "name_NIT","desc": "desc_NIT"
},{
"name": "name_KIT","desc": "desc_KIT"
}
]
}
解决方法
您可以使用两个级别的转换转换。实际上,除了默认为root
的数组键之外,在第一级中获得了所需的数组。然后只在第二级内重命名数组的键,例如
[
{
"operation": "shift","spec": {
"*": "&1"
}
},{
"operation": "shift","spec": {
"@(0,&)": "CollegeList"
}
}
]
,
另一种方法:
[
{
"operation": "shift","spec": {
"CIT": {
"*": "CollegeList[]"
},"*": "CollegeList[]"
}
}
]