我需要使用JOLT将下面的输入JSON转换成下面列出的格式。链接是通过第一个数组元素的deps.name与第二个数组元素的spec.name来完成的。我对链接一无所知。谢谢你的帮助。
输入json
[
{
"key": "Primary",
"metadata": {
"name": "35f8d9fac891"
},
"deps": [
{
"name": "e6ae6d29edf8"
}
],
"spec": {
"vattr1": "vval1",
"vattr2": "vval2"
}
},
{
"key": "Secondary",
"metadata": {
"name": "hp74z"
},
"spec": {
"name": "e6ae6d29edf8",
"nattr1": "nval1",
"nattr2": "nval2",
"deps": {
"Name": "5505da219463"
}
}
}
]
预期的输出格式
{
"key": "Primary",
"metadata": {
"name": "35f8d9fac891"
},
"deps": [
{
"name": {
"key": "Secondary",
"metadata": {
"name": "hp74z"
},
"spec": {
"name": "e6ae6d29edf8",
"nattr1": "nval1",
"nattr2": "nval2",
"deps": {
"Name": "5505da219463"
}
}
}
}
],
"spec": {
"vattr1": "vval1",
"vattr2": "vval2"
}
}
从这个规范开始,以查看数组中的这两个对象是否要在一个新数组中累积,该数组中的键是否具有公共名称(“e6ae6d29edf8”),例如
{
"operation": "shift",
"spec": {
"*": {
"@(0)": "@(1,spec.name)",
"@": "@(1,deps[&].name)"
}
}
}
如果这些名称(一个来自spec.name,另一个来自deps[],测试将失败。名字)不匹配(就试试吧!)
然后使用
{
"operation": "shift",
"spec": {
"*": {
"*": "common"
}
}
}
为了通过将其转换为“通用”来摆脱令人困惑的键名(“e6ae6d29edf8”)。现在,我们得到两个对象的数组,需要用第二个对象替换“deps”数组的值。修改转换规范旨在进行此类操作。然后,使用移位转换规范只选择“通用”对象。
因此,完整的规格将是:
[
{
"operation": "shift",
"spec": {
"*": {
"@(0)": "@(1,spec.name)",
"@": "@(1,deps[&].name)"
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": "common"
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": "=firstElement(@(1,&))",
"SecondaryObject": "=lastElement(@(1,common))"
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"common": {
"deps": {
"*": "=(@(3,SecondaryObject))"
}
}
}
},
{
"operation": "shift",
"spec": {
"common": {
"*": "&"
}
}
}
]
http://jolt-demo.appspot.com/网站上的演示是
编辑(考虑到存在多个要嵌入的注释对象):
然后,您可以在第一个规范中确定一个属性"name_val"
,用作即将到来的规范中使用的公共标识符值,例如
[
{
"operation": "shift",
"spec": {
"*": {
"@(0)": "@(1,spec.name)",
"@": "@(1,deps[&].name)",
"@(0,deps[&].name)": "name_val"
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": {
"@(2,name_val)": {
"@1": "common[&2]"
}
}
}
}
},
{
"operation": "shift",
"spec": {
"common": {
"0": "c1",
"*": "c2"
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"c1": {
"deps": {
"*": {
"*": "=(@(4,c2))"
}
}
}
}
},
{
"operation": "shift",
"spec": {
"c1": ""
}
}
]
我正在尝试使用 Jolt 转换来转换 Json,在这里寻找一些输入。我正在尝试过滤一个键,该键是另一个属性的值。这是我的输入和预期输出 我看到的输出是 我试过的规格是 但是我没有得到预期的输出。我也尝试了一些其他组合,但未能获得正确的输出。有人能帮忙吗?
我正在尝试使用Jolt transformation转换一个JSON,在这里寻找一些输入。我正在尝试根据属性值进行过滤。 我的目标是获得一个数组,其中只包含动作为“remove”的项目。 这是我的输入和预期输出: 输入: 预期产出: 你能帮我写一个简单的规范吗?
我正在尝试使用Jolt transformation转换一个JSON,在这里寻找一些输入。我试图通过属性的内部值进行过滤。 我的目标是得到一个数组,它只包含类型为“xx”的项目。但不是所有的项目对象,只有一些字段 这是我的输入和预期输出: 输入: 预期产出: 你能帮我写一个简单的规范吗?
我正在尝试使用Jolt transformation转换一个JSON,在这里寻找一些输入。我试图通过属性的内部值进行过滤。 我的目标是获得一个只包含类型名为' xx '的项目的数组。 这是我的输入和预期输出: 输入: 预期产出: 你能帮我写一个简单的规范吗?
我有以下输入,我想通过 jolt 处理器转换预期输出中的数据 输入 预期产量 我们有包含属性的数据,数组包含一对数据,我想把这对数据转换成键和值
我想转换这个JSON: 对此JSON: 我目前正在使用该规范,但它不适合我: 有人能给出一个规范吗?有没有关于jolt JSON的明确文档 ................................................................................................................................