我需要使用jolt转换来执行以下JSON转换:
需要取下钥匙:
src 端口
和 tx 间隔
要更改密钥的名称:
vdevice-host-name
到local-host-name
要拆分键:值键的字符串值,请虚拟设备数据键
:
示例:
“vdevice-dataKey”:“10.127.200.1-mpls-10.157.96.2-internet-ipsec”
to
“远程系统ip:10.157.96.2”
和
输入 JSON 为:
{
"data": [{
"src-ip": "10.161.25.170",
"dst-ip": "10.161.25.182",
"vdevice-name": "10.127.200.1",
"color": "mpls",
"src-port": 12346,
"createTimeStamp": 1623334401569,
"system-ip": "10.157.96.2",
"dst-port": 12346,
"site-id": 141011085,
"transitions": 0,
"local-host-name": "AEXI630_XITO098_E_COUNTRY_2081",
"local-color": "mpls",
"detect-multiplier": "7",
"vdevice-dataKey": "10.127.200.1-mpls-10.157.96.2-internet-ipsec",
"@rid": 168682,
"vmanage-system-ip": "10.127.200.1",
"proto": "ipsec",
"lastupdated": 1623334401562,
"state": "up",
"tx-interval": 1000,
"uptime-date": 1623334260000
}, {
"src-ip": "10.161.25.170",
"dst-ip": "10.162.45.94",
"vdevice-name": "10.127.200.1",
"color": "mpls",
"src-port": 12346,
"createTimeStamp": 1623334402985,
"system-ip": "10.157.16.2",
"dst-port": 12346,
"site-id": 142011050,
"transitions": 0,
"vdevice-host-name": "AEXI630_XITO098_E_COUNTRY_2081",
"local-color": "mpls",
"detect-multiplier": "7",
"vdevice-dataKey": "10.127.200.1-mpls-10.157.16.2-internet-ipsec",
"@rid": 206290,
"vmanage-system-ip": "10.127.200.1",
"proto": "ipsec",
"lastupdated": 1623334401562,
"state": "up",
"tx-interval": 1000,
"uptime-date": 1623334260000
}]
}
输出JSON为:
{
"data": [{
"src-ip": "10.161.25.170",
"dst-ip": "10.161.25.182",
"vdevice-name": "10.127.200.1",
"color": "mpls",
"createTimeStamp": 1623334401569,
"system-ip": "10.157.96.2",
"dst-port": 12346,
"site-id": 141011085,
"transitions": 0,
"local-host-name": "AEXI630_XITO098_E_COUNTRY_2081",
"local-color": "mpls",
"detect-multiplier": "7",
"vdevice-dataKey": "10.127.200.1-mpls-10.157.96.2-internet-ipsec",
"@rid": 168682,
"vmanage-system-ip": "10.127.200.1",
"proto": "ipsec",
"lastupdated": 1623334401562,
"state": "up",
"uptime-date": 1623334260000,
"remote-system-ip":"10.157.96.2",
"remote-color":"internet"
}, {
"src-ip": "10.161.25.170",
"dst-ip": "10.162.45.94",
"vdevice-name": "10.127.200.1",
"color": "mpls",
"createTimeStamp": 1623334402985,
"system-ip": "10.157.16.2",
"dst-port": 12346,
"site-id": 142011050,
"transitions": 0,
"local-host-name": "AEXI630_XITO098_E_COUNTRY_2081",
"local-color": "mpls",
"detect-multiplier": "7",
"vdevice-dataKey": "10.127.200.1-mpls-10.157.16.2-internet-ipsec",
"@rid": 206290,
"vmanage-system-ip": "10.127.200.1",
"proto": "ipsec",
"lastupdated": 1623334401562,
"state": "up",
"uptime-date": 1623334260000,
"remote-system-ip":"10.157.16.2",
"remote-color":"internet"
}]
}
您可以连续应用Shift转换以生成要渲染的新元素,然后修改覆盖测试转换以将字符串拆分为碎片以确定远程系统ip和远程颜色值,然后删除转换以删除所需的键以及最近生成的键,例如
[
{
"operation": "shift",
"spec": {
"*": {
"*": {
"vdevice-host-name": "&2.[&1].local-host-name",
"local-host-name": "&2.[&1].&",
"*": "&2.[&1].&",
"@(0,vdevice-dataKey)": "&2.[&1].remote"
}
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": {
"*": {
"remote": "=split('-', @(1,&))",
"remote-system-ip": "@(1,remote[2])",
"remote-color": "@(1,remote[3])"
}
}
}
},
{
"operation": "remove",
"spec": {
"*": {
"*": {
"src-port": "",
"tx-interval": "",
"remote": ""
}
}
}
}
]
编辑:键名称是动态的和未知的。 我想获取一个对象,并创建一个字符串数组,将每个键和值连接在一起。 我的键包含下划线,我需要摆脱(我有这部分工作)。我正在努力弄清楚下一步将所有内容连接在一起。(我想我错过了如何从RHS引用键和值?) 输入: 期望输出: 规格: 电流规格输出:
我想转换我的嵌套json消息,并使用Jolt规范只获取必需的文件- 我的输入JSON: 低于我的规格输出,这不是预期的- 我尝试了很多选择,但国籍不是我预期的输出。请在这里帮助颠簸转换
我正在尝试使用JOLT进行JSON转换,我想我已经很接近了,但是我不能做的是为每个当前没有出现的字段添加一个新字段。 我已经阅读了很多教程,下面的代码是我希望能够工作的。然而,它似乎没有添加到新的“名称”字段中。 这是我的震撼: 这是输出: 我希望它是这样的: 谁能告诉我哪里出错了?显然,默认值用于添加新项目,但它似乎没有执行任何操作。
我需要使用jolt转换来执行以下JSON转换。 需要将输入Json中的“PID3”值拆分为输出Json中的键值对数组 输入JSON 输出数据杰明 --基于输入字符串的多个
问题内容: 我试图使用分隔符拆分值。但是我发现了令人惊讶的结果 我期望得到8个值。[5,6,7,EMPTY,8,9,EMPTY,EMPTY] 但是我只得到6个值。 任何想法以及如何解决。无论EMPTY值在何处,它都应该位于数组中。 问题答案: 默认情况下,从结果数组中删除结尾的空字符串。要关闭此机制,我们需要使用重载版本,将其设置为负值,例如 更多细节: 内部返回该方法的结果,你可以在此方法的文档
任何想法和如何修复。无论空值出现在任何位置,它都应该在数组中。