Здравствуйте, мне нужно преобразовать json в json, заменить ключ в зависимости от некоторых значений:
ключ: vdevice-name
if value of key is 10.127.200.1 replace with "Alfa" if value of key is 10.127.200.2 replace with "beta" if value of key is 10.127.200.3 replace with "omega"
Введите 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,
"vdevice-host-name": "AEXI630_XITO098_E_COUNTRY_2081",
"local-color": "mpls",
"detect-multiplier": "7",
"vdevice-dataKey": "10.127.200.1-mpls-10.157.96.2-mpls-ipsec",
"@rid": 168682,
"proto": "ipsec",
"lastupdated": 1623334401562,
"tx-interval": 1010,
"state": "up",
"uptime-date": 1623334260000
},
{
"src-ip": "10.161.25.170",
"dst-ip": "10.162.45.94",
"vdevice-name": "10.127.200.2",
"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-mpls-ipsec",
"@rid": 206290,
"proto": "ipsec",
"lastupdated": 1623334401562,
"tx-interval": 1000,
"state": "up",
"uptime-date": 1623334260000
}
]
}
желаемый выходной JSON:
{
"data": [
{
"src-ip": "10.161.25.170",
"dst-ip": "10.161.25.182",
"vdevice-name": "Alfa",
"color": "mpls",
"src-port": 12346,
"createTimeStamp": 1623334401569,
"system-ip": "10.157.96.2",
"dst-port": 12346,
"site-id": 141011085,
"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.96.2-mpls-ipsec",
"@rid": 168682,
"proto": "ipsec",
"lastupdated": 1623334401562,
"tx-interval": 1010,
"state": "up",
"uptime-date": 1623334260000
},
{
"src-ip": "10.161.25.170",
"dst-ip": "10.162.45.94",
"vdevice-name": "beta",
"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-mpls-ipsec",
"@rid": 206290,
"proto": "ipsec",
"lastupdated": 1623334401562,
"tx-interval": 1000,
"state": "up",
"uptime-date": 1623334260000
}
]
}
Я пробую следующую спецификацию:
[
{
"operation": "shift",
"spec": {
"data": {
"*": {
"vdevice-name": {
"10.127.200.1": {
"#Alfa": "vdevice-name"
},
"10.127.200.2": {
"#beta": "vdevice-name"
},
"10.127.200.3": {
"#omega": "vdevice-name"
}
},
"*": "&"
}
}
}
}
]
Но мой вывод:
{
"src-ip" : [ "10.161.25.170", "10.161.25.170" ],
"dst-ip" : [ "10.161.25.182", "10.162.45.94" ],
"vdevice-name" : [ "Alfa", "beta" ],
"color" : [ "mpls", "mpls" ],
"src-port" : [ 12346, 12346 ],
"createTimeStamp" : [ 1623334401569, 1623334402985 ],
"system-ip" : [ "10.157.96.2", "10.157.16.2" ],
"dst-port" : [ 12346, 12346 ],
"site-id" : [ 141011085, 142011050 ],
"transitions" : [ 0, 0 ],
"vdevice-host-name" : [ "AEXI630_XITO098_E_COUNTRY_2081", "AEXI630_XITO098_E_COUNTRY_2081" ],
"local-color" : [ "mpls", "mpls" ],
"detect-multiplier" : [ "7", "7" ],
"vdevice-dataKey" : [ "10.127.200.1-mpls-10.157.96.2-mpls-ipsec","10.127.200.1-mpls-10.157.16.2-mpls-ipsec" ],
"@rid" : [ 168682, 206290 ],
"proto" : [ "ipsec", "ipsec" ],
"lastupdated" : [ 1623334401562, 1623334401562 ],
"tx-interval" : [ 1010, 1000 ],
"state" : [ "up", "up" ],
"uptime-date" : [ 1623334260000, 1623334260000 ]
}
Мне нужна помощь :)