JSON 修復ツール

壊れたJSONや不正なJSONを自動で修正・復元します—安全に、迅速に、そして無料で。

このツールは、壊れたまたは無効なJSONを自動エラー修正で修復します。エクスポートされたデータやログ、手動編集ファイルでよく見られる、欠落した引用符、余分なカンマ、不一致の括弧などの一般的な構文エラーを対象にし、有効で解析可能なJSONを生成します。

以下のJSONを修正してください

JSON修復の仕組み

このツールは入力された内容をスキャンし、一般的なJSON構文の問題を検出して的確に修正します。可能な限り有効なJSONを生成します。

  1. 入力を解析し、一般的な構文エラー(不正な文字、誤った位置の括弧、不正確な文字列の引用符など)を検出します。
  2. 見逃しがちなミスを自動修正します。例として、欠落した引用符の追加、末尾の不要なカンマの削除、括弧の正しい修正などがあります。
  3. 修復されたJSONを出力します。ほとんどの場合、結果はすぐに解析または使用可能な状態です。
  4. 構造を自動的に修復できない場合は、入力を調整できるように明確なエラーが表示されます。

よくあるJSONエラーとその解決方法

このツールが修正できる一般的なJSONの間違いと、それぞれの例をご紹介します。

クォートなしキー

キーはダブルクォーテーションで囲む必要があります。

Before:
{ 名前: "ボブ" }
After:
{ "name": "ボブ" }

修正:引用符のないオブジェクトキーをすべてダブルクオーテーションで囲みます。

シングルクォート使用

JSONは文字列に対して二重引用符のみを受け付けます。

Before:
{ 'role': '管理者' }
After:
{ "役割": "管理者" }

修正:すべての文字列内のシングルクォートをダブルクォートに置換します。

末尾のカンマ

最後の項目の後にコンマは付けられません。

Before:
{ "a": 1, "b": 2, }
After:
{ "a": 1, "b": 2 }

修正:末尾のカンマをすべて削除します。

不一致または閉じられていない括弧

すべての括弧と中括弧は正しく閉じる必要があります。

Before:
[1、2、3
After:
[1、2、3]

修正:欠落している閉じ括弧または中括弧を追加しました。

コンマの不足または過剰

配列やオブジェクトの要素は、単一のカンマで区切る必要があります。

Before:
{ "a": 1 "b": 2 }
After:
{ "a": 1, "b": 2 }

修正: 欠落しているコンマを挿入、または重複したコンマを削除します。

コメント行が存在します

標準のJSONではコメント(//や/* ... */のような)は許可されていません。

Before:
{ "id": 1, // ユーザーID
 "active": true }
After:
{ "id": 1, "active": true }

修正: 入力からコメント行を削除します。

無効な番号形式

有効な形式は単純な10進数のみです(NaN、無限大、16進数は不可)。

Before:
{ "val": NaN }
After:
{ "val": null }

修正:無効な番号を null に置き換えます。

エスケープされていない制御文字

文字列内の改行などの特殊文字はエスケープする必要があります。

Before:
{ "msg": "ライン1
ライン2" }
After:
{ "msg": "1行目\n2行目" }

修正:制御文字を正しくエスケープします。

オブジェクト内の重複キー

同じオブジェクト内での重複キーはあいまいさを引き起こします。

Before:
{ "name": "A", "name": "B" }
After:
{ "name": "B" }

修正:重複するキーがある場合、最後の値のみを保持します。

不正な配列

配列には角括弧が必要で、項目の間にコンマを入れなければなりません。

Before:
[ 1 2 3 ]
After:
[ 1, 2, 3 ]

修正:配列要素間の欠落しているカンマを追加しました。

入力が空欄または全て空白です

JSONは空にできません。

Before:
After:
null

修正:入力が空の場合にnullを返す問題を解決しました。

例:壊れたJSONから有効な修復へ

不正なJSON入力
{ user: 'alice', id: 42, roles: [管理者, '編集者',] // 余分なコンマ
 active: true }
修復されたJSON出力
{
  "user": "アリス",
  "id": 42,
  "roles": [
    "管理者",
    "編集者"
  ],
  "active": true
}

このJSON修復ツールの使い方

  1. 以下のエディターに壊れたJSONを貼り付けるか、入力してください。
  2. 「修復」ボタンをクリックして、一般的な構文エラーを自動的に検出し修正しましょう。
  3. 修復された出力を確認し、修正済みのJSONをコピーしてください。

重要なデータに使用する前に、修復したJSONは必ず確認してください。複雑または大幅に破損した入力の場合、手動での調整が必要になることがあります。

JSON修復のコード例

さまざまなプログラミング言語でJSONを修復する方法を解説します。

JavaScript (Node.js) with jsonrepair
Install: npm install jsonrepair
const { jsonrepair } = require('jsonrepair');
const broken = '{ name: "Bob", age: 42, }';
const fixed = jsonrepair(broken);
console.log(fixed); // Now valid JSON!
JavaScript (Node.js) simple fix (not for production)
Install: Standard library
let broken = "{ name: 'Bob', age: 42 }";
broken = broken.replace(/(['"])?:([\s]*)([^\s,\{\}\[\]":']+)/g, '"$1$3":');
try {
  let obj = JSON.parse(broken);
  console.log(obj);
} catch (e) {
  console.error('Still broken:', e.message);
}
Python with dirtyjson
Install: pip install dirtyjson
import dirtyjson
broken = "{ name: 'Bob', age: 42 }"
obj = dirtyjson.loads(broken)
print(obj)
Python with demjson3
Install: pip install demjson3
import demjson3
broken = "{ name: 'Bob', age: 42 }"
obj = demjson3.decode(broken)
print(obj)
Go (using otto for JS-like object parsing)
Install: go get github.com/robertkrimen/otto
package main
import (
  "fmt"
  "github.com/robertkrimen/otto"
)
func main() {
  vm := otto.New()
  broken := "{ name: 'Bob', age: 42 }"
  value, err := vm.Run("(" + broken + ")")
  if err != nil {
    fmt.Println("Cannot repair:", err)
  } else {
    obj, _ := value.Export()
    fmt.Println(obj)
  }
}
Java with org.json (manual fix for single quotes)
Install: org.json:json
import org.json.JSONObject;
public class Main {
  public static void main(String[] args) {
    String broken = "{'name': 'Bob', 'age': 42}".replace(''', '"');
    JSONObject obj = new JSONObject(broken);
    System.out.println(obj);
  }
}
C# with Newtonsoft.Json (try-catch, manual fix)
Install: Newtonsoft.Json
using System;
using Newtonsoft.Json;
class Program {
  static void Main() {
    var broken = "{ name: 'Bob', age: 42 }".Replace("'", "\"");
    try {
      var obj = JsonConvert.DeserializeObject(broken);
      Console.WriteLine(obj);
    } catch (Exception ex) {
      Console.WriteLine("Broken JSON: " + ex.Message);
    }
  }
}
PHP (manual fix for single quotes/unquoted keys)
Install: Standard library
<?php
$broken = "{ name: 'Bob', age: 42 }";
$fixed = preg_replace("/'([^"]*)'/", '"$1"', $broken);
$fixed = preg_replace('/([a-zA-Z0-9_]+):/', '"$1":', $fixed);
$obj = json_decode($fixed);
var_dump($obj);
Ruby with json-repair (via gem or shell call)
Install: gem install json-repair or use npx jsonrepair
# Using system call to npx jsonrepair
require 'open3'
broken = "{ name: 'Bob', age: 42 }"
fixed, _ = Open3.capture2("echo #{broken.inspect} | npx jsonrepair")
puts fixed
Bash (npx jsonrepair CLI)
Install: npm install -g jsonrepair
echo "{ name: 'Bob', age: 42 }" | npx jsonrepair
Rust (suggest manual pre-processing)
Install: Standard libraries
// Rust does not have a json repair crate yet. Pre-process string with regex to fix simple cases, then use serde_json.
Kotlin (manual fix, like Java)
Install: org.json:json
import org.json.JSONObject
fun main() {
  var broken = "{ name: 'Bob', age: 42 }".replace("'", "\"")
  broken = Regex("([a-zA-Z0-9_]+):").replace(broken, ""$1":")
  val obj = JSONObject(broken)
  println(obj)
}
TypeScript (Node.js) with jsonrepair
Install: npm install jsonrepair
import { jsonrepair } from 'jsonrepair';
const broken = '{ name: "Bob", age: 42 }';
const fixed = jsonrepair(broken);
console.log(fixed);
Dart (manual string fixes)
Install: Standard library
var broken = "{ name: 'Bob', age: 42 }";
var fixed = broken.replaceAll("'", '"').replaceAllMapped(
  RegExp(r'([a-zA-Z0-9_]+):'),
  (m) => '"${m[ 1 ]}":',
);
print(fixed);
Elixir (manual fix with Regex)
Install: Standard library
broken = "{ name: 'Bob', age: 42 }"
fixed = Regex.replace(~r/'/, broken, """)
fixed = Regex.replace(~r/(\w+):/, fixed, ""\\1":")
IO.puts(fixed)