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

如何使用jq重构字段名存储于数组的松散结构API返回JSON

问题根源

  • 字段缺失问题:原有代码通过index($item)根据值反向查索引,当data数组存在重复值时,index只会返回第一个匹配位置,导致后续同值字段被覆盖,最终输出字段数不足24个。
  • 字段丢失问题:原有代码直接提取[.lightValueObjects[].data]处理,直接丢弃了lightValueObjects下除data外的所有其他字段。

正确jq实现

.headerData.methodNames as $header
| .lightValueObjects | map(
    # 保留除data外的所有原始字段
    del(.data) +
    # 直接遍历索引绑定字段,避免反向查索引的错误
    (reduce range(.data | length) as $idx ({};
        .[$header[$idx]] = (if .data[$idx] == "" then null else .data[$idx] end)
    ))
)

逻辑说明

  1. 预先存储methodNames为$header变量复用,保证字段名和值的对应关系和API定义一致。
  2. 完整遍历lightValueObjects数组的每一个元素,而非仅提取data字段,保留全部原有属性。
  3. 采用索引遍历的方式生成结构化字段,无论data数组是否存在重复值,都能完整生成全部24个对应字段。
  4. 保留空字符串转null的处理逻辑,符合需求要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:54:04