JSONata动态引用JSON键问题:变量访问属性未达预期
JSONata动态键访问问题解决
问题说明
JSON对象包含动态生成的字符串键,尝试用JSONata访问第一个键时,x字段未得到预期结果,期望x的值和y完全一致。
原JSONata表达式
( $firstDate := $keys(slice)[0]; $.{ "firstDate": $firstDate, "x": slice.$firstDate, "y": slice."Friday, February 28" } )
输入JSON
{ "slice": { "Friday, February 28": [ { "key": "friday" }, { "key": "february" } ] } }
预期输出
{ "firstDate": "Friday, February 28", "x": [ { "key": "friday" }, { "key": "february" } ], "y": [ { "key": "friday" }, { "key": "february" } ] }
解决方法
问题根源是点语法无法解析变量作为键名,slice.$firstDate会把$firstDate当作字面量键名,而非变量。需要改用方括号语法来访问动态键:
修改后的JSONata表达式:
( $firstDate := $keys(slice)[0]; $.{ "firstDate": $firstDate, "x": slice[$firstDate], "y": slice."Friday, February 28" } )
使用slice[$firstDate]后,JSONata会解析变量$firstDate的值作为键名,从而正确获取对应属性,让x的结果和y一致。
内容的提问来源于stack exchange,提问作者Ritesh
相关产品推荐
相关产品推荐

