You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JQ扁平化转换动态JSON:拆分stats下value键值为独立对象

实现目标的JQ方案

你之前写的.stats | map(del(.value) + .value[])没有达到预期,原因是仅完成了外层value数组的拼接,没有对value数组内部的嵌套对象做键值对拆分,也没有完成字段重命名。可直接使用以下语句完成完整转换:

.stats[]
| {devid, key} as $base
| .value[] | to_entries
| .[]
| {devid: $base.devid, key: $base.key, nodeId: (.key | tonumber), value: .value}
执行逻辑说明
  • 先遍历stats数组的每个元素,将每个条目公共的devid、key字段暂存为公共上下文$base,避免后续拆分内层结构时丢失字段关联
  • 逐层展开value数组的元素,对数组内承载键值对的嵌套对象执行to_entries操作,将对象的动态键值对拆分为独立的条目列表
  • 遍历拆分后的每一个键值对条目,组装为目标结构:将原嵌套对象的字符串键转为数字类型作为nodeId字段,对应键的数值作为value字段,同时带上暂存的公共devid、key字段
输出效果验证

对提供的输入载荷执行上述语句,输出结构完全匹配预期,示例输出如下:

{"devid":3,"key":"diskall","nodeId":0,"value":0.0001}
{"devid":3,"key":"diskall","nodeId":1,"value":0.0001}
{"devid":3,"key":"diskall","nodeId":2,"value":0.0012}
{"devid":7,"key":"diskall","nodeId":0,"value":0.0003}

注:由于原始value对象的键数量是动态值,该语句无需调整即可适配任意长度、任意键数量的嵌套结构。

内容的提问来源于stack exchange,提问作者nobrac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 12:15:04