JSONフォーマッター

高速・無料・安全なオンラインJSONフォーマッター

下にJSONを入力・貼り付けてください

オンラインですぐにJSONを整形。行番号やシンタックスハイライトを備えたモダンでコードフレンドリーなエディターを提供。処理は迅速かつプライベートで、データはブラウザ外に出ません。

JSON整形とは?

JSON整形は、インデントや空白、改行を加えることで、一貫性のある人間が読める形にJSONデータを変換する手法です。構造や内容は変更せず、監査、デバッグ、共有、編集が容易になります。また、マシンやツールとの互換性も保たれます。

JSONは仕様上、文字列以外の空白を無視します。しかし、インデントが無かったり1行に全て詰め込まれた(ミニファイド)JSONは、人間が読み解いたり安全に編集するのが非常に困難です。

JSONの整形と最小化の違い

  • 整形は、わかりやすさと読みやすさのために空白・インデント・改行を追加します。
  • 最小化は、不要な空白を完全に除去し、保存や転送の効率を最大化します。
  • 高機能JSONフォーマッターは、これらのモードを切り替え可能で、人間向けと機械最適化用バージョンを自由に選択できます。

例:ミニファイドJSONと整形JSONの比較

ミニファイド(圧縮)JSON:
{"id":"3f4b2c","user":{"name":"Dana","is_active":true},"roles":["admin","editor"],"count":7}
整形(見やすくプリント)JSON:
{
  "id": "3f4b2c",
  "user": {
    "name": "Dana",
    "is_active": true
  },
  "roles": [
    "admin",
    "editor"
  ],
  "count": 7
}

なぜJSONを整形するのか?

  • 可読性:適切なインデントと改行により、ネストしたオブジェクトの確認や誤りの発見、複雑なデータ構造の理解が容易になります。
  • デバッグ:無効なデータや予期しない値のトラブルシューティングを、キー・値・階層を視覚的に追うことで効率化できます。
  • 共同作業:整ったJSONはコードレビュー、ドキュメント、共有ファイルでの議論や編集が行いやすくなります。
  • バージョン管理:GitなどのVCSでは整形済みJSONの方が変更点が分かりやすく、履歴追跡が容易です。
  • 規約遵守:多くのスタイルガイドや自動リントツール(Prettier、ESLint、jqなど)が一貫したフォーマットを求め、明確かつ標準的なコードを促進します。
  • ツール互換性:APIやCLI、エディターは人間が扱いやすい整形済み入力を期待することがあります。

JSONフォーマッターの仕組み

  1. パース:まず入力テキストを厳密なJSONパーサーで解析し、構文の妥当性を検査します(引用符の欠如や末尾のカンマ、エスケープされていない文字などの問題を検出)。
  2. プリティプリント:有効な場合は、解析済みデータを指定のインデント(通常は2か4スペース)と改行付きの文字列に変換し、見やすい形式を作成します。

無効なJSONの場合はエラーを表示し、問題の位置や内容に関する詳細なメッセージを提供します。

整形オプション

  • インデント設定:レベルごとのスペース数を最大8まで指定可能。
  • オブジェクトのキーをアルファベット順にソート
  • インデントにスペースではなくタブを使用
  • 非ASCII文字をUnicodeにエスケープ
  • 出力を最小化(一行で空白なし)

整形で解決できる一般的な問題

  • 一行・ミニファイドJSON:APIやログからのデータは帯域節約のため圧縮されており、手動編集が困難。整形によりレビューと編集が容易になります。
  • 不揃いなインデント:複数ソースからのJSONはタブやスペースが混在したり、深さが不整合な場合が多い。整形により一貫性が確保され読みやすくなります。
  • 大規模・ネスト構造:設定ファイルや複雑なAPIレスポンスなどの深い入れ子構造も、整形された状態であれば追跡・操作が容易化し、対応エディターでは折りたたみも可能。

実際の利用例:APIレスポンスの整形

AWS、Stripe、Google Cloud等のサードパーティAPI統合時、レスポンスは高速化のため圧縮されることが多い。JSONを整形することで、欠落フィールドの検査や予期しない値のデバッグ、チームとの共有が容易になります。

例:API生データレスポンス
{"amount":2500,"currency":"usd","status":"succeeded","charges":[{"id":"ch_1Gq","amount":2500}]}
レビュー用に整形済み
{
  "amount": 2500,
  "currency": "usd",
  "status": "succeeded",
  "charges": [
    {
      "id": "ch_1Gq",
      "amount": 2500
    }
  ]
}

このツールでのJSON整形方法

  1. 未整形、ミニファイド、または誤ったJSONを入力欄に貼り付けるかアップロード。
  2. インデント幅やキーソートなどの整形オプションを選択。
  3. 「フォーマット」ボタンをクリックして処理開始。
  4. 整った読みやすいJSONを表示またはコピー。エラーがあれば、詳細な構文メッセージで修正を支援。

すべての整形処理はブラウザ内で安全に行われ、データはデバイス外に送信されません。

JSONフォーマットのコード例

さまざまなプログラミング言語でのJSONの書式設定方法をご覧ください。これらの例は基本的なフォーマット技術を分かりやすく示しています。

JavaScript (Node.js)
Install: Standard library
const ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
const pretty = JSON.stringify(JSON.parse(ugly), null, 2);
console.log(pretty);
Python
Install: Standard library (json)
import json
ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}'
pretty = json.dumps(json.loads(ugly), indent=2)
print(pretty)
Go
Install: Standard library (encoding/json)
package main
import (
  "encoding/json"
  "fmt"
)
func main() {
  ugly := []byte(`{"name":"Alice","age":30,"roles":["admin","user"]}`)
  var obj interface{}
  json.Unmarshal(ugly, &obj)
  pretty, _ := json.MarshalIndent(obj, "", "  ")
  fmt.Println(string(pretty))
}
Java
Install: com.fasterxml.jackson.core:jackson-databind
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
  public static void main(String[] args) throws Exception {
    String ugly = "{"name":"Alice","age":30,"roles":["admin","user"]}";
    ObjectMapper mapper = new ObjectMapper();
    Object obj = mapper.readValue(ugly, Object.class);
    String pretty = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
    System.out.println(pretty);
  }
}
C#
Install: Newtonsoft.Json (Json.NET)
using System;
using Newtonsoft.Json;
class Program {
  static void Main() {
    var ugly = "{"name":"Alice","age":30,"roles":["admin","user"]}";
    var parsed = JsonConvert.DeserializeObject(ugly);
    var pretty = JsonConvert.SerializeObject(parsed, Formatting.Indented);
    Console.WriteLine(pretty);
  }
}
PHP
Install: Standard library (json_decode/json_encode)
<?php
$ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
$obj = json_decode($ugly);
echo json_encode($obj, JSON_PRETTY_PRINT);
Ruby
Install: Standard library (json)
require 'json'
ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}'
pretty = JSON.pretty_generate(JSON.parse(ugly))
puts pretty
Bash (Linux/macOS) with jq
Install: brew install jq (or apt-get install jq)
echo '{"name":"Alice","age":30,"roles":["admin","user"]}' | jq .
Rust
Install: cargo add serde_json
fn main() {
  let ugly = r#"{"name":"Alice","age":30,"roles":["admin","user"]}"#;
  let value: serde_json::Value = serde_json::from_str(ugly).unwrap();
  let pretty = serde_json::to_string_pretty(&value).unwrap();
  println!("{}", pretty);
}
Kotlin
Install: com.fasterxml.jackson.core:jackson-databind
import com.fasterxml.jackson.databind.ObjectMapper
fun main() {
  val ugly = "{"name":"Alice","age":30,"roles":["admin","user"]}"
  val mapper = ObjectMapper()
  val obj = mapper.readValue(ugly, Any::class.java)
  val pretty = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj)
  println(pretty)
}
Swift
Install: Standard library (JSONSerialization)
import Foundation
let ugly = "{\"name\":\"Alice\",\"age\":30,\"roles\":[\"admin\",\"user\"]}"
if let data = ugly.data(using: .utf8),
   let obj = try? JSONSerialization.jsonObject(with: data),
   let pretty = try? JSONSerialization.data(withJSONObject: obj, options: .prettyPrinted),
   let prettyString = String(data: pretty, encoding: .utf8) {
    print(prettyString)
}
TypeScript
Install: Standard library
const ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
const pretty = JSON.stringify(JSON.parse(ugly), null, 2);
console.log(pretty);
SQL (PostgreSQL)
Install: Standard (jsonb_pretty)
SELECT jsonb_pretty('{"name":"Alice","age":30,"roles":["admin","user"]}'::jsonb);
MySQL
Install: Standard (JSON_PRETTY, 5.7+)
SELECT JSON_PRETTY('{"name":"Alice","age":30,"roles":["admin","user"]}');
PowerShell
Install: Standard
$ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}'
$obj = $ugly | ConvertFrom-Json
$pretty = $obj | ConvertTo-Json -Depth 10
Write-Output $pretty
Perl
Install: cpan JSON
use JSON;
my $ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
my $obj = decode_json($ugly);
print to_json($obj, { pretty => 1 });
Dart
Install: Standard library (dart:convert)
import 'dart:convert';
void main() {
  const ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
  final obj = jsonDecode(ugly);
  final pretty = JsonEncoder.withIndent('  ').convert(obj);
  print(pretty);
}
Elixir
Install: mix deps.get jason
ugly = ~s({"name":"Alice","age":30,"roles":["admin","user"]})
{:ok, obj} = Jason.decode(ugly)
pretty = Jason.encode!(obj, pretty: true)
IO.puts(pretty)
Scala
Install: com.typesafe.play:play-json_2.13:2.9.4
import play.api.libs.json._
object Main extends App {
  val ugly = """{"name":"Alice","age":30,"roles":["admin","user"]}"""
  val jsValue = Json.parse(ugly)
  val pretty = Json.prettyPrint(jsValue)
  println(pretty)
}