rtk-ai/rtk

bug(json): curl filter outputs invalid JSON — object keys lose double quotes

Open

#1.015 geöffnet am 4. Apr. 2026

Auf GitHub ansehen
 (1 Kommentar) (1 Reaktion) (0 zugewiesene Personen)Rust (2.914 Forks)batch import
area:clibugeffort-smallfilter-qualitygood first issueplatform:macospriority:high

Repository-Metriken

Stars
 (48.085 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 11T 1h) (45 gemergte PRs in 30 T)

Beschreibung

Description

When rtk curl filters JSON API responses, the output has unquoted object keys, producing invalid JSON that breaks downstream parsers (python3 -c 'json.load(...)', jq, etc.).

Reproduction

# With rtk:
rtk curl -s https://any-api.example/endpoint | python3 -c 'import sys,json; json.load(sys.stdin)'
# => JSONDecodeError: Expecting property name enclosed in double quotes

# Without rtk (works fine):
rtk proxy curl -s https://any-api.example/endpoint | python3 -c 'import sys,json; json.load(sys.stdin)'
# => OK

Expected vs Actual

Expected (valid JSON):

{"id": 123, "status": "open"}

Actual (invalid — keys unquoted):

{id: 123, status: "open"}

Root Cause

In src/cmds/system/json_cmd.rs, the extract_schema() function formats object keys without wrapping them in double quotes:

// Lines 251-258
lines.push(format!("{}  {}: {},", indent, key, val_trimmed));  // missing quotes around key
lines.push(format!("{}  {}: {}", indent, key, val_trimmed));   // missing quotes around key
lines.push(format!("{}  {}:", indent, key));                   // missing quotes around key

This is called from curl_cmd.rs line 61 via filter_json_string()extract_schema().

Impact

  • Any pipeline that does rtk curl ... | python3 -c 'json.load(...)' or | jq . breaks
  • Workaround: rtk proxy curl bypasses filtering but defeats the purpose of rtk
  • Affects all JSON API calls through curl (Gitea, GitHub, REST APIs, etc.)

Environment

  • rtk v0.34.3 (stable) and dev-0.35.0-rc.108 — both affected
  • macOS ARM64

Fix

Wrap key in double quotes at lines 253, 255, and 258 of json_cmd.rs.

Contributor Guide