Json 使用 jolt 复制数组元素
Json array elements duplication using jolt
我想知道 jolt 是否可以处理以下转换:
{
"interface": [
{
"field": "A",
"ip": [
"1.1.1.1",
"1.1.1.2"
]
},
{
"field": "B",
"ip": [
"1.1.1.3"
]
}
]
}
到
{
"interface": [
{
"field": "A",
"ip": "1.1.1.1"
},
{
"field": "A",
"ip": "1.1.1.2"
},
{
"field": "B",
"ip": "1.1.1.3"
}
]
}
即对于包含子数组的 JSON 数组,为其每个子数组项创建一个父项版本。
jolt 能做到吗?
这不是完整的答案,但也许能以某种方式帮助您或其他人可以提供帮助?
[
{
"operation": "shift",
"spec": {
"interface": {
"*": {
"ip": {
"*": {
"@": "ip",
"@(2,field)": "field"
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"ip": {
"*": {
"@": "interface[&1].ip",
"@(2,field)": {
"???": "interface[&2].field" // How to take proper index of an array?
}
}
}
}
}
]
这可以通过两个阶段的转变来实现:
- 创建数组数组
- 然后将数组的数组展平
[
{
"operation": "shift",
"spec": {
"interface": {
"*": {
"ip": {
"*": {
"@": "[&3].[&1].ip",
"@(2,field)": "[&3].[&1].field"
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": "interface.[]"
}
}
}
]
我想知道 jolt 是否可以处理以下转换:
{
"interface": [
{
"field": "A",
"ip": [
"1.1.1.1",
"1.1.1.2"
]
},
{
"field": "B",
"ip": [
"1.1.1.3"
]
}
]
}
到
{
"interface": [
{
"field": "A",
"ip": "1.1.1.1"
},
{
"field": "A",
"ip": "1.1.1.2"
},
{
"field": "B",
"ip": "1.1.1.3"
}
]
}
即对于包含子数组的 JSON 数组,为其每个子数组项创建一个父项版本。
jolt 能做到吗?
这不是完整的答案,但也许能以某种方式帮助您或其他人可以提供帮助?
[
{
"operation": "shift",
"spec": {
"interface": {
"*": {
"ip": {
"*": {
"@": "ip",
"@(2,field)": "field"
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"ip": {
"*": {
"@": "interface[&1].ip",
"@(2,field)": {
"???": "interface[&2].field" // How to take proper index of an array?
}
}
}
}
}
]
这可以通过两个阶段的转变来实现:
- 创建数组数组
- 然后将数组的数组展平
[
{
"operation": "shift",
"spec": {
"interface": {
"*": {
"ip": {
"*": {
"@": "[&3].[&1].ip",
"@(2,field)": "[&3].[&1].field"
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": "interface.[]"
}
}
}
]