为无键结构JSON数据构建Grafana可用的JSON Path字段
解决Grafana中无键JSON数组的字段映射问题
针对你这种二维无键JSON数组(每个子数组为[计数, 日期]),以下是几种可行的处理方案:
方案1:用Grafana内置Transform功能直接处理(推荐)
这是无需额外工具的最便捷方法:
- 添加并配置JSON API数据源,确保能成功拉取到目标数组数据。
- 在面板中添加查询,此时返回的每条数据会是形如
["10","2024-01-07"]的数组字段(默认字段名可能是Value)。 - 进入Transform标签页,添加第一个转换:
- 选择「Add field from calculation」,设置字段名为
count,表达式填$Value[0],类型选Number(将字符串计数转为数值类型)。
- 选择「Add field from calculation」,设置字段名为
- 添加第二个转换:
- 选择「Add field from calculation」,设置字段名为
date,表达式填$Value[1],类型选Time(自动识别日期字符串为时间格式)。
- 选择「Add field from calculation」,设置字段名为
- 最后添加「Organize fields」转换,移除原始的
Value字段,只保留count和date即可用于可视化。
方案2:预处理数据(修改API或新增中间层)
如果有权限修改API返回格式,直接将数组转换为带键的JSON对象:
[ {"count": "10", "date": "2024-01-07"}, {"count": "241", "date": "2024-01-08"}, ... ]
若无法修改API,可搭建一个简单的中间服务(比如用Python/Node.js),拉取原始API数据后转成带键格式再返回给Grafana,这种方式能一劳永逸解决字段识别问题。
方案3:利用JSON API插件的JSON Path提取
在JSON API数据源的查询配置中,通过JSON Path直接拆分字段:
- 在查询的「JSON Path」中分别配置两个路径:
- 计数字段:
$.*[0],字段名设为count - 日期字段:
$.*[1],字段名设为date
- 计数字段:
- 保存查询后,Grafana会自动生成两个独立字段,后续只需转换
count为数值类型、date为时间类型即可。
内容的提问来源于stack exchange,提问作者Sari Rahal
相关产品推荐
相关产品推荐

