0

我需要替换对象中所有元素的子字符串。

例如,替换 val1 和 val2 中的所有“X”:

{
    "input": [
        {
            "val1": "008 X 148",
            "val2": "SOME X DATA"
        },
        {
            "val1": "X 005 5PM",
            "val2": "SOME X DATA"
        },
        {
            "val1": "MODTOX",
            "val2": "X SOME X DATA"
        }
    ]
}

我的第一个意图是先使用 $map,然后使用 $each,如下所示:

$map(input, function($i) 
    { $each($i, function($s) 
        { $replace($s, "X", "Y" ) 
        })
    })

,但正如预期的那样,这会破坏对象。

有什么建议吗?最后'输入'应该仍然具有相同的结构。

4

1 回答 1

1

您需要使用转换运算符来修改输入数据的副本:

$ ~> | input |  $each(function($v, $n){{$n: $replace($v, "X", "Y") }} ) ~> $merge() |

https://try.jsonata.org/yeKAKg_U_ _

于 2021-03-17T07:54:08.837 回答