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

使用JQ解析JSON输出CSV 提取tags中Gamma值不存在则返回NULL

JSON提取指定字段生成CSV实现方案

需求说明

从输入的JSON数组中提取字段生成CSV,规则为:若tags映射中存在键Gamma则返回对应值,不存在则输出NULL,输出字段顺序为generated_time、platform、id、Gamma值、created。

方案1:使用jq命令行工具实现

适用于快速处理的场景,执行命令如下:

# 假设输入文件名为input.json
jq -r '
  "generated_time,platform,id,,",
  .[1:] | .[] | [
    .generated_time,
    .platform,
    .id,
    (.tags.Gamma // "NULL"),
    .created
  ] | @csv
' input.json | sed 's/"//g'

逻辑说明:

  • 先输出匹配要求的表头
  • 跳过JSON数组第一个表头定义元素,遍历后续业务数据
  • (.tags.Gamma // "NULL")是jq的条件替代语法,当Gamma键不存在或值为空时,自动返回NULL
  • 最后用sed移除csv默认生成的双引号,完全匹配预期输出格式

方案2:使用Python代码实现

适用于需要后续扩展逻辑的场景,代码如下:

import json
import csv

# 读取输入JSON文件
with open("input.json", "r", encoding="utf-8") as f:
    json_data = json.load(f)

# 写入CSV文件
with open("output.csv", "w", newline="", encoding="utf-8") as f:
    csv_writer = csv.writer(f)
    # 写入表头
    csv_writer.writerow(["generated_time", "platform", "id", "", ""])
    # 遍历处理业务数据(跳过第一个表头元素)
    for item in json_data[1:]:
        gamma_value = item["tags"].get("Gamma", "NULL")
        row = [
            item["generated_time"],
            item["platform"],
            item["id"],
            gamma_value,
            item["created"]
        ]
        csv_writer.writerow(row)

两种方案执行后输出结果均与预期一致:

generated_time,platform,id,,
2021-09-09:12:03:12,earth,2eeee67748,Ray,2021-08-25 09:41:06
2021-09-09:12:03:12,sun,xxxxx12334,NULL,2021-08-25 10:11:31

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:18:03