0

我有一个 json,其属性名称以我需要忽略的一些前缀开头,并以实际字段名称结尾:

{
    "context": {
        "values": {
            "group1:0:foo": "08119037",
            "group1:0:checkbox": [
                "2",
                "3"
            ]
        }
    }
}

我可以提取确切的字段group1:0:foo,但不能提取“以 :foo 结尾的字段”:

{
    "foo": context.values.`group1:0:foo`
}

在 JSONata 练习器中:https ://try.jsonata.org/uqDfozN8r

4

2 回答 2

0

一种可能的解决方案:https ://try.jsonata.org/9vruWw6HR

{
  "foo": $lookup(context.values, context.values.$keys()[$contains($, 'foo')])
}

结果:

{
  "foo": "08119037"
}
于 2021-04-19T12:24:58.640 回答
0

shrickus的解决方案:

$spread(context.values)[$match($keys($)[0], /.*:foo/)]  {
    $keys($)[0].$split(":")[2]: $.*
}

-> 接受的答案,因为它避免了查找。

于 2021-04-23T08:41:29.967 回答