JSONata:按部分名称提取字段
JSONata: Extract fields by partial name
我有一个 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
一个可能的解决方案:https://try.jsonata.org/9vruWw6HR
{
"foo": $lookup(context.values, context.values.$keys()[$contains($, 'foo')])
}
结果:
{
"foo": "08119037"
}
shrickus 的解决方案:
$spread(context.values)[$match($keys($)[0], /.*:foo/)] {
$keys($)[0].$split(":")[2]: $.*
}
-> 已接受答案,因为它避免了查找。
我有一个 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
一个可能的解决方案:https://try.jsonata.org/9vruWw6HR
{
"foo": $lookup(context.values, context.values.$keys()[$contains($, 'foo')])
}
结果:
{
"foo": "08119037"
}
shrickus 的解决方案:
$spread(context.values)[$match($keys($)[0], /.*:foo/)] {
$keys($)[0].$split(":")[2]: $.*
}
-> 已接受答案,因为它避免了查找。