JSON 格式化器

快速、免費且安全的線上 JSON 格式化工具。

請在下方格式化您的 JSON

快速線上格式化您的 JSON,立即取得結果。使用搭配行號與語法高亮的現代程式碼編輯器。所有操作快速且私密,資料絕不離開瀏覽器。

什麼是 JSON 格式化?

JSON 格式化是將 JSON 資料轉換成統一且易於閱讀的形式,透過添加縮排、空格與換行來達成,而不改變其結構或內容。恰當的格式化讓 JSON 更易於檢查、除錯、分享及編輯,同時保持機器與軟體工具的相容性。

依定義,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 與其他版本管理工具可生成更有意義的差異比對,有利於追蹤變更歷程。
  • 規範遵循:許多風格指南及自動化檢查工具(如 Prettier、ESLint 或 jq)要求一致格式以提升清晰性與標準化。
  • 工具相容性:部分 API、命令列工具與編輯器需要格式化輸入以利人機互動或日誌紀錄。

JSON 格式化器如何運作?

  1. 解析:格式化器首先使用嚴格的 JSON 解析器嘗試解析您的輸入,檢查語法有效性,例如缺少引號、尾逗點或未跳脫字元。
  2. 漂亮列印:驗證通過後,將解析後資料序列化回字串,並依用戶設定的縮排(通常為 2 或 4 個空格)與換行符號,產生美觀格式。

若輸入非有效 JSON,格式化器會拋出錯誤或提供有助修正的訊息,說明問題位置與性質。

格式化設定選項

  • 縮排:設定每層使用的空格數(最多 8 個)。
  • 物件鍵名按字母排序
  • 縮排改用 Tab 鍵代替空格
  • 將非 ASCII 字元轉為 Unicode 編碼
  • 縮小輸出(單行,不含空白)

格式化能解決的常見問題

  • 單行/縮小 JSON:API 或日誌文件傳回的資料常常縮小,以節省頻寬,手動編輯十分困難。格式化後可恢復可讀性,方便檢視與編輯。
  • 縮排不一致:貼上來自多個來源的 JSON 可能混用 Tab、空格或縮排深度不一。重新格式化可統一格式,提升清晰度與一致性。
  • 大型/深層結構:深度巢狀的陣列或物件(如設定檔或複雜 API 回應)格式化後更易導航,支援編輯器中摺疊瀏覽。

實務應用:格式化 API 回應

整合第三方 API(如 AWS、Stripe 或 Google Cloud)時,回應通常為緊湊格式以提速。格式化 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。這些範例展示了基本的格式化技巧。

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)
}