你好,我需要将json转换为json,替换键,具体取决于以下几个值:
密钥: vdevice-name
如果键值为10.127.200.1,则用"Alfa“替换为”Alfa“,如果键值为10.127.200.2。2如果键值为10.127.200.3,则用"beta”替换。
输入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 ]
}我需要帮助:)
发布于 2021-07-01 03:12:49
我是这样做的:
[
{
"operation": "shift",
"spec": {
"data": {
"*": {
"vdevice-name": {
"10.127.200.1": {
"#alfa": "data[&3].vdevice-name"
},
"10.127.200.2": {
"#omega": "data[&3].vdevice-name"
},
"*": {
"$": "data[&3].vdevice-name"
}
},
"*": "data[&1].&"
}
}
}
}
]发布于 2021-07-01 07:49:02
实际上,您的解决方案可以工作,子项可以转换为替换,以使它们具有动态,而不是单独地重复它们,例如
[
{
"operation": "shift",
"spec": {
"data": {
"*": {
"vdevice-name": {
"10.127.200.1": {
"#alfa": "&4[&3].&2"
},
"10.127.200.2": {
"#omega": "&4[&3].&2"
},
"*": {
"$": "&4[&3].&2"
}
},
"*": "&2[&1].&"
}
}
}
}
]其中,&4意味着上升4层,读取键(data),&2表示上升2级,读取键(vdevice-name)。
https://stackoverflow.com/questions/68202658
复制相似问题