テクノロジー · 実用ガイド
JSONDecodeError が line 1 column 1?parser を直す前に byte を確認する
文字ゼロは失敗位置であり原因ではありません。status、media type、body 長と安全な fingerprint を保存し、空、HTML、decode、truncate を分類して producer または caller の契約を直し、valid・empty・invalid fixture で検証します。

文字ゼロは失敗位置であり原因ではありません。status、media type、body 長と安全な fingerprint を保存し、空、HTML、decode、truncate を分類して producer または caller の契約を直し、valid・empty・invalid fixture で検証します。
JSON text は1つの直列化された値を含み、空または空白だけの body は JSON ではありません。 Python は入力が有効な JSON document でないと JSONDecodeError を送出します。
1. parse 前に response envelope を固定する
method、伏せ字 URL、status、redirect、Content-Type、Content-Encoding、宣言長、受信 byte 数、runtime、正確な例外を記録します。方針が許す場合も body hash と短い伏せ字 prefix だけにし、token、Cookie、個人情報全文を残しません。
body は1度だけ読み、欠落、0 byte、空白、HTML、JSON らしい text、decode 不能 byte を区別します。同じ消費済み stream に json()、text()、json() を重ねて2回目の失敗を producer 障害と誤認しません。
2. character zero の実体を分類する
位置ゼロが空なら no-body 契約、早期 close、payload 消失を疑います。先頭の小なり記号は login、proxy、error page の HTML であることが多く、別の prefix は誤 endpoint、BOM、encoding、compression を示します。
本物の JSON 開始後の syntax error と character-zero failure を分けます。line、column、position は位置として記録し、原因と決めません。trailing data、truncate、複数 JSON 連結は別の修復が必要です。
3. producer と変換経路を追う
application handler から middleware、proxy、cache、decompressor、client library まで追跡します。secret を複製せず request ID と時刻を合わせ、status、media type、encoding、body を設定した層と redirect 先を確認します。
file なら正確な path、byte 長、encoding、atomic write 境界を証明します。新しい空 file、古い temp、同時 partial write は parser 緩和では直りません。次の writer が上書きする前に失敗 byte を保存します。
4. 症状ではなく契約を修復する
成功に representation がない契約なら明示的に分岐し parse しません。JSON を約束するなら producer が有効な値と正しい Content-Type を返し、HTML なら認証・proxy・routing、encoding や decompress は責任層で直します。
狭い decoder 例外だけを捕捉し、安全な context または型付き契約 error に変換します。空 object を返す、全 syntax error を retry する、任意文字を削る方法は data loss や重複副作用を隠します。
5. 3種類の fixture と可観測な失敗を検証する
valid JSON、意図した no-body、invalid または wrong-media response を試験します。valid は期待型、empty は文書化した no-content 分岐、invalid は型付き診断と安全な証拠で失敗しなければなりません。
代表負荷で parse error 率、body 長分布、status/media mismatch、redirect、retry を確認します。producer と consumer が一致し、失敗が見え、機密本文を記録せず rollback があることが成功です。
