震动条件规范



我想要一个条件转换,如果输入中的特定字段的值与我的条件匹配,我需要在输出中添加一个属性。以下是我需要的输入和输出。

输入:

{
"MC": "OTHER",
"mProperty": {
"PID1": "value1",
"PID2": "value2",
"PID3": "k1"
}
}

条件-如果MC值为OTHER,我想添加一个新的字段dataType=string到PID1(或任何id)。

期望输出(如果MC值为OTHER):

{
"mDefintion": {
"mProperty": [
{
"id": {
"value": "PID1"
},
"value": [
{
"valueString": {
"value": "value1"
}
}
],
"datatype": "string"
},
{
"id": {
"value": "PID2"
},
"value": [
{
"valueString": {
"value": "value2"
}
}
],
"datatype": "integer"
},
{
"id": {
"value": "PID3"
},
"value": [
{
"valueString": {
"value": "k1"
}
}
],
"datatype": "integer"
}
]
}
}

下面是我使用的震动代码:

[
{
"operation": "shift",
"spec": {
"*": "&",
"mProperty": {
"PID1": {
"#piid": "mDefintion.mProperty[#2].id.value",
"@": "mDefintion.mProperty[#2].value[0].valueString.value"
},
"*": {
"$": "mDefintion.mProperty[#2].id.value",
"@": "mDefintion.mProperty[#2].value[0].valueString.value"
}
}
}
}
]

无论我怎么努力,我都无法使条件部分工作。下面是我得到的上述代码的输出-

{
"MC": "OTHER",
"mDefintion": {
"mProperty": [
{
"id": {
"value": "piid"
},
"value": [
{
"valueString": {
"value": "value1"
}
}
]
},
{
"id": {
"value": "PID2"
},
"value": [
{
"valueString": {
"value": "value2"
}
}
]
},
{
"id": {
"value": "PID3"
},
"value": [
{
"valueString": {
"value": "k1"
}
}
]
}
]
}
}

您可以使用以下规范:

如果您想更改OTHER中的MC的输出,您可以根据需要更改shift的第二个操作。

[
{
"operation": "shift",
"spec": {
"@": "data[0]",
"MC": {
"OTHER": {
"@3": "data[1]"
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"0": "&1[&]",
"1": {
"*": "&2[&1].&",
"mProperty": {
"PID1": {
"#piid": "&4[&3].mDefintion.&2[#2].id.value",
"@": "&4[&3].mDefintion.&2[#2].value[0].valueString.value"
},
"*": {
"$": "&4[&3].mDefintion.&2[#2].id.value",
"@": "&4[&3].mDefintion.&2[#2].value[0].valueString.value"
}
}
}
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": "=lastElement(@0)"
}
},
{
"operation": "shift",
"spec": {
"*": ""
}
}
]

最新更新