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

如何用JQ提取filterFeatureGroup对象的键值并拼接为指定数组?

解决JQ提取JSON键值拼接时的重复问题

问题需求

提取JSON中filterFeatureGroup对象的键与对应值数组中的元素,将每个键和值拼接为「键: 值」格式的字符串,最终组成目标数组,但现有JQ代码输出存在元素重复问题。

原始JSON数据

{
  "filterFeatureGroup": {
    "Hauttyp": [
      "Normal"
    ],
    "Deckkraft": [
      "Mittlere Deckkraft"
    ],
    "Grundfarbe": [
      "Grau"
    ],
    "Produkteigenschaften": [
      "Vegan"
    ],
    "Textur / Konsistenz / Applikation": [
      "Stift"
    ]
  }
}

期望输出

[
  "Hauttyp: Normal",
  "Deckkraft: Mittlere Deckkraft",
  "Grundfarbe: Grau",
  "Produkteigenschaften: Vegan",
  "Textur / Konsistenz / Applikation: Stift"
]

尝试的JQ代码

jq ".filterFeatureGroup| (keys[]| split(\",\")) + (values[])| join(\": \")"

解决方案

使用to_entries将对象转换为键值对数组,再逐个拼接字符串:

jq ".filterFeatureGroup | to_entries | map(\"\(.key): \(.value[])\")"

如果确定每个值数组只有一个元素,也可以用.value[0]替代.value[],效果一致:

jq ".filterFeatureGroup | to_entries | map(\"\(.key): \(.value[0])\")"

问题原因说明

你之前的代码错误地将keys[]和values[]分开遍历,这会导致两者做笛卡尔积组合,从而产生重复元素。而to_entries会把每个键和对应的绑定值配对成单独的对象,确保每个键只和自己对应的值拼接,避免重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:55:27