如何使用Jsonata获取键名含点的JSON字段值?
问题
需要从给定JSON响应的data数组中,提取每个日期对应的custom_activity.actitype_1AC8KLe2XghWuNlO93LMv5.count字段值。原Jsonata查询语句如下:
data. { "value": custom_activity.actitype_1AC8KLe2XghWuNlO93LMv5.count, "date": datetime }
由于该字段键名包含点号,导致查询无法返回正确结果,且JSON结构由第三方提供无法修改,需寻求可行的Jsonata查询方案。
完整JSON响应示例:
{ "aggregations": { "totals": { "custom_activity.actitype_1AC8KLe2XghWuNlO93LMv5.count": 87, "custom_activity.actitype_3hhepbDK50KhtrV9cnLTiN.count": 103, "custom_activity.actitype_3s8V7iv8ka6zFii5KVr8oF.count": 265, "custom_activity.actitype_3xec3f7Z3tP8fRo6l8mh00.count": 88, "custom_activity.actitype_4izlAyTeClOO50BLjHHC9F.count": 328, "custom_activity.actitype_4nTymVIz4li2swFSUIQCjB.count": 70, "custom_activity.actitype_6sq5Xno7A5Oi7zWimxWSdx.count": 39 } }, "data": [{ "custom_activity.actitype_1AC8KLe2XghWuNlO93LMv5.count": 0, "custom_activity.actitype_3hhepbDK50KhtrV9cnLTiN.count": 0, "custom_activity.actitype_3s8V7iv8ka6zFii5KVr8oF.count": 7, "custom_activity.actitype_3xec3f7Z3tP8fRo6l8mh00.count": 0, "custom_activity.actitype_4izlAyTeClOO50BLjHHC9F.count": 11, "custom_activity.actitype_4nTymVIz4li2swFSUIQCjB.count": 0, "custom_activity.actitype_6sq5Xno7A5Oi7zWimxWSdx.count": 0, "datetime": "2024-01-01T00:00:00+00:00" }, { "custom_activity.actitype_1AC8KLe2XghWuNlO93LMv5.count": 3, "custom_activity.actitype_3hhepbDK50KhtrV9cnLTiN.count": 3, "custom_activity.actitype_3s8V7iv8ka6zFii5KVr8oF.count": 34, "custom_activity.actitype_3xec3f7Z3tP8fRo6l8mh00.count": 3, "custom_activity.actitype_4izlAyTeClOO50BLjHHC9F.count": 27, "custom_activity.actitype_4nTymVIz4li2swFSUIQCjB.count": 0, "custom_activity.actitype_6sq5Xno7A5Oi7zWimxWSdx.count": 0, "datetime": "2024-01-02T00:00:00+00:00" }, { "custom_activity.actitype_1AC8KLe2XghWuNlO93LMv5.count": 10, "custom_activity.actitype_3hhepbDK50KhtrV9cnLTiN.count": 5, "custom_activity.actitype_3s8V7iv8ka6zFii5KVr8oF.count": 12, "custom_activity.actitype_3xec3f7Z3tP8fRo6l8mh00.count": 3, "custom_activity.actitype_4izlAyTeClOO50BLjHHC9F.count": 20, "custom_activity.actitype_4nTymVIz4li2swFSUIQCjB.count": 6, "custom_activity.actitype_6sq5Xno7A5Oi7zWimxWSdx.count": 2, "datetime": "2024-01-03T00:00:00+00:00" }] }
解决方案
在Jsonata中,当字段键名包含点号等特殊字符时,需要用方括号+引号或$."字段名"的语法来访问,避免解析错误。修改后的查询语句如下:
data. { "value": $."custom_activity.actitype_1AC8KLe2XghWuNlO93LMv5.count", "date": datetime }
说明
$."字段名"的语法可以正确引用包含特殊字符的键名,其中$代表当前上下文的对象(即data数组中的每个元素)。- 该查询会遍历
data数组的每个元素,提取对应日期和目标字段的值,返回结果结构如下:
[ { "value": 0, "date": "2024-01-01T00:00:00+00:00" }, { "value": 3, "date": "2024-01-02T00:00:00+00:00" }, { "value": 10, "date": "2024-01-03T00:00:00+00:00" } ]
内容的提问来源于stack exchange,提问作者Sandeep Dhar
相关产品推荐
相关产品推荐

