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

使用jq解析JSON,提取metadata与spec中labels的键值对

提取JSON中指定Labels键值对的解决方案

一、处理.metadata.labels的键值对提取

如果之前的操作丢失键,通常是错误地只提取值而未保留键关联。以下是两种常见场景的实现方式:

  • Python 实现:直接遍历字典键值对,完整保留键值关联
import json

# 假设JSON数据已加载为data字典
metadata_labels = data.get('metadata', {}).get('labels', {})
# 生成目标格式的键值对列表
metadata_kv = [f'"{key}": "{value}"' for key, value in metadata_labels.items()]
# 按需求拼接(例如逗号分隔)
formatted_metadata = ', '.join(metadata_kv)
  • jq 命令行实现:通过to_entries转换后格式化输出,避免丢失键
jq -r '.metadata.labels | to_entries | map("\(.key): \(.value)") | join(", ")' your_file.json

二、提取.spec.labels中嵌套在result的键值对

假设.spec.labels的结构为{"spec": {"labels": {"result": {"team": "eng", "instance_id": "x387j"}}}},对应实现如下:

  • Python 实现:逐层获取嵌套的result对象,再提取键值对
spec_labels_result = data.get('spec', {}).get('labels', {}).get('result', {})
spec_kv = [f'"{key}": "{value}"' for key, value in spec_labels_result.items()]
formatted_spec = ', '.join(spec_kv)
  • jq 命令行实现:直接定位到嵌套的result节点后处理
jq -r '.spec.labels.result | to_entries | map("\(.key): \(.value)") | join(", ")' your_file.json

三、合并两处的键值对(可选)

若需要将两处的labels键值对合并为一组:

  • Python 实现:字典解包合并后格式化
all_labels = {**metadata_labels, **spec_labels_result}
all_kv = [f'"{key}": "{value}"' for key, value in all_labels.items()]
formatted_all = ', '.join(all_kv)
  • jq 命令行实现:合并两个对象后格式化输出
jq -r '(.metadata.labels + .spec.labels.result) | to_entries | map("\(.key): \(.value)") | join(", ")' your_file.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:42:37