教程

Claude Code 输出格式控制完全指南:JSON、流式、结构化输出使用方法

Claude Code 和 Claude API 输出格式完整控制指南:--output-format 参数(text/json/stream-json)、非交互模式(-p)的输出控制、结构化 JSON 输出(--json-schema 字段约束)、流式输出(Server-Sent Events)的处理方式、include-partial-messages 流式渐进显示、以及 CI/CD 管道中解析 JSON 输出的实用技巧。

2026/3/183分钟 阅读ClaudeEagle

在非交互模式(-p--print)下,Claude Code 支持多种输出格式, 满足脚本集成、CI/CD 管道和实时显示的不同需求。

三种输出格式

通过 --output-format 参数指定:

格式参数值适合场景
纯文本text(默认)人类阅读、简单脚本
JSON 对象json程序解析、CI/CD
流式 JSONstream-json实时显示、长任务

text 格式(默认)

bash
# 最简单,直接输出 Claude 的文字回复
claude -p "列出 Python 列表去重的 3 种方法"

# 输出:
# 1. 使用 set():list(set(lst))
# 2. 使用 dict.fromkeys():list(dict.fromkeys(lst))
# 3. 使用列表推导:[x for i, x in enumerate(lst) if x not in lst[:i]]

json 格式(程序集成推荐)

bash
claude -p "分析这段代码有什么问题" --output-format json

输出示例:

json
{
  "type": "result",
  "subtype": "success",
  "session_id": "session_abc123",
  "cost_usd": 0.00234,
  "duration_ms": 2341,
  "num_turns": 1,
  "result": "分析结果:该代码存在以下问题...",
  "is_error": false
}

在脚本中解析:

bash
# 提取 result 字段
RESULT=$(claude -p "分析代码" --output-format json | python3 -c "
import json, sys
data = json.load(sys.stdin)
print(data['result'])
")
echo "$RESULT"
python
import subprocess, json

output = subprocess.run(
    ["claude", "-p", "分析这段代码", "--output-format", "json"],
    capture_output=True, text=True
)
data = json.loads(output.stdout)
print(data["result"])
print(f"耗时:{data['duration_ms']}ms,成本:${data['cost_usd']:.4f}")

stream-json 格式(实时流式)

适合长任务,边生成边处理:

bash
claude -p "写一篇 2000 字的技术文章"   --output-format stream-json   --include-partial-messages

流式事件示例:

json
{"type": "system", "subtype": "init", "session_id": "xxx", ...}
{"type": "assistant", "message": {"role": "assistant", "content": [{"type": "text", "text": "# 文章标题

第一段..."}]}, "turn_number": 1}
{"type": "result", "subtype": "success", "cost_usd": 0.05, ...}

Python 处理流式输出:

python
import subprocess, json

process = subprocess.Popen(
    ["claude", "-p", "写一篇长文", "--output-format", "stream-json",
     "--include-partial-messages"],
    stdout=subprocess.PIPE, text=True
)

for line in process.stdout:
    line = line.strip()
    if not line:
        continue
    event = json.loads(line)
    if event["type"] == "assistant":
        # 实时打印流式内容
        for block in event["message"]["content"]:
            if block["type"] == "text":
                print(block["text"], end="", flush=True)
    elif event["type"] == "result":
        print(f"

成本:${event['cost_usd']:.4f}")

结构化 JSON 输出(--json-schema)

让 Claude 严格按照指定 Schema 输出:

bash
claude -p "分析这段 Python 代码的问题"   --output-format json   --json-schema '{
    "type": "object",
    "properties": {
      "issues": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "severity": {"type": "string", "enum": ["critical", "major", "minor"]},
            "line": {"type": "integer"},
            "description": {"type": "string"},
            "suggestion": {"type": "string"}
          }
        }
      },
      "overall_score": {"type": "integer", "minimum": 0, "maximum": 100}
    }
  }'

输出将严格符合 Schema:

json
{
  "issues": [
    {
      "severity": "major",
      "line": 15,
      "description": "未处理异常可能导致程序崩溃",
      "suggestion": "添加 try-except 块"
    }
  ],
  "overall_score": 72
}

CI/CD 管道集成示例

yaml
# .github/workflows/code-review.yml
- name: AI Code Review
  run: |
    REVIEW=$(claude -p "对以下改动做代码审查,输出 JSON"       --output-format json       --json-schema '{"type":"object","properties":{"approved":{"type":"boolean"},"issues":{"type":"array","items":{"type":"string"}}}}'       < git_diff.txt)

    APPROVED=$(echo "$REVIEW" | python3 -c "import json,sys; print(json.load(sys.stdin)['result'])" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('approved','false'))")

    if [ "$APPROVED" = "false" ]; then
      echo "AI 审查未通过"
      exit 1
    fi

input-format:接收流式 JSON 输入

配合其他工具的流式输出:

bash
# 接收流式 JSON 输入,输出 JSON
some-tool --output stream-json |   claude -p "总结以上内容"     --input-format stream-json     --output-format json

来源:Claude Code 官方文档 - docs.anthropic.com/en/docs/claude-code/cli-reference

相关文章推荐

教程Claude Code 企业进程审计实战:corporate launcher 与 processWrapper 配置指南详解 Claude Code 新增的 corporate launcher 企业启动器支持,通过 processWrapper 配置项统一审计和管控所有子进程,适合有严格 IT 合规要求的企业部署场景。2026/8/10教程Claude Code /fork 与 /subtask 命令实战:后台会话与临时子任务怎么选Claude Code Week 29 更新将 /fork 拆分为 /fork(后台独立会话)和 /subtask(会话内临时子任务),详解两者的区别、适用场景和升级注意事项。2026/8/10教程Claude Code Archive 插件源实战教程:不用 Git 和 npm,用一个 zip 就能装插件Claude Code v2.1.224 新增 archive 插件来源类型,详解如何用 HTTPS 托管的 zip 压缩包分发和安装插件,完全跳过 Git/npm,配合 SHA-256 哈希锁定保证完整性。2026/8/10教程Claude Code v2.1.221 深度解读:VS Code Focus View 与沙箱凭据脱敏新玩法Claude Code v2.1.221 新增 VS Code Focus View 折叠工具活动噪音,以及沙箱凭据文件 mask 脱敏模式,详解设计原理与多项 Shell 权限检查修复。2026/8/7教程Claude Code 屏幕阅读器模式完全教程:让 VoiceOver 和 NVDA 用户流畅使用命令行 AIClaude Code 屏幕阅读器模式完全指南:三种开启方式、确认提示时序、表格朗读优化等细节,帮助视障用户顺畅使用命令行 AI 工具。2026/8/6教程Claude Code Artifacts 实战教程:让会话产出变成可分享的实时页面详解 Claude Code Artifacts 功能的创建、更新与分享流程,以及最新的 MCP 连接器实时数据拉取能力,教你把会话输出变成可交互网页。2026/8/6