教程

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 Remote Control 使用指南:手机和浏览器远程继续本地会话Claude Code Remote Control 让你在手机、平板或浏览器中继续本地 Claude Code 会话。代码仍在本机执行,web/mobile 只是连接窗口,可访问本地文件、MCP servers 和项目配置。2026/6/8教程Claude Code Routines 指南:定时、API 和 GitHub 事件触发的云端自动化Claude Code Routines 让 Claude Code 在 Anthropic 管理的云端基础设施上自动运行:可按计划执行、由 HTTP API 触发,或响应 GitHub PR/release 等事件。2026/6/8教程Claude Code Agent Teams 使用指南:多 Claude 会话协作、共享任务列表和直接通信Claude Code Agent Teams 适合需要多个 Claude Code 会话并行探索、互相挑战和协调的复杂任务。它不同于 subagents:teammates 有独立上下文、共享任务列表,并能直接通信。2026/6/8教程Claude Code Dynamic Workflows 完整指南:用脚本编排上百个 SubagentsClaude Code Dynamic Workflows 让编排逻辑从上下文窗口迁移到 JavaScript 脚本,适合代码库审计、500 文件迁移、多源交叉验证研究和可重复质量检查。2026/6/8教程OpenClaw ACP Agents 完整指南:把 Codex、Claude Code、Gemini 接入聊天线程OpenClaw ACP Agents 官方文档中文整理:什么是 ACP runtime、如何把 Codex/Claude Code/Gemini CLI 绑定到聊天、current conversation bind、thread-bound session、持久会话、运行时配置和适用场景。2026/6/4教程Claude Code Dev Container 完整指南:隔离环境、持久认证、网络出口和组织策略Claude Code Dev Container 官方文档中文整理:为什么在容器内运行 Claude Code、devcontainer feature 安装、认证和 settings 持久化、组织 policy、环境变量、网络出口限制、无权限提示模式的风险,以及团队安全落地建议。2026/5/20