JSON のシングルクォートを修正

JSON の文字列とオブジェクトキーは二重引用符を使う必要があります。シングルクォートの値は JavaScript の断片、Python 風の出力、LLM の応答でよく見かけます。

なぜシングルクォートが通らないのか

厳格な JSON はダブルクォートの文字列だけを受け入れます。たとえ JavaScript の開発者には見慣れた形でも、パーサは {'name':'Ada'} を拒否します。

エラーの例

{ 'name': 'Ada', 'active': true }

修正後の JSON

{ "name": "Ada", "active": true }

シングルクォートのテキストはどこから来るのか

Python の repr() や dict の出力、コンソールからコピーした JavaScript のオブジェクトリテラル、Ruby の hash inspect、そして多くの LLM 応答などは、すべてシングルクォートを使います。これらは JSON ではなく、似ているだけの各言語ネイティブのリテラルです。

なぜ find-and-replace は危険か

' を " に一律置換すると、{ 'note': 'it\'s fine' } のようにアポストロフィを含む値が壊れます。置換後は内側のアポストロフィが新しい文字列の区切りとぶつかります。安全なコンバータは、引用符の文脈を追跡し、区切り文字だけを差し替えて中身には触れません。

安全な変換戦略

まず入力をトークン化します:テキストを走査し、開始の引用符で文字列の境界を識別し、各トークンをダブルクォートで組み直します —— 内部のダブルクォートはエスケープし、不要になったエスケープ済みシングルクォートは戻します。本サイトの修復ツールはこれを 1 度のパスで行います。

関連する JSON 構文エラー

シングルクォート JSON は、同じ payload に他の JavaScript 風の問題 —— キーの無引用、末尾カンマ、行コメント、undefined 値 —— を抱えていることが多いです。引用符を直したあと、残りを洗い出すために検証してください。

FAQ

Q:JSON5 ではシングルクォート文字列は有効ですか? A:はい、JSON5 は許容します。Q:Python の json.loads はシングルクォートを受け入れますか? A:いいえ —— 本当に Python リテラルなら ast.literal_eval を使い、そうでなければ先に引用符を変換してください。Q:JSON のキーもダブルクォートが必要ですか? A:はい、キーは文字列ですから同じ規則です。