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 等工具时,格式化的 JSON 可生成更有意义的差异,便于跟踪历史改动。
  • 规范合规:许多编码风格指南和自动检查工具(如 Prettier、ESLint 或 jq)要求一致的格式以确保清晰和标准化。
  • 工具兼容性:部分 API、命令行界面及编辑器期望格式化输入,方便人工交互及日志记录。

JSON 格式化器如何工作?

  1. 解析:格式化器首先使用严格的 JSON 解析器尝试解析您的输入文本。此步骤验证语法有效性,捕捉遗漏引号、尾随逗号或未转义字符等问题。
  2. 美化处理:验证通过后,解析后的数据将按照用户定义的缩进(通常为 2 或 4 个空格)和换行,序列化为字符串,生成“美化”版本。

如果输入不是有效 JSON,格式化器将抛出错误或提供有助于定位和理解问题的详细提示。

格式化选项

  • 缩进:设置每级缩进的空格数(最多 8 个)。
  • 按字母顺序排序对象键
  • 使用制表符缩进代替空格
  • 将非 ASCII 字符转义为 Unicode
  • 压缩输出(单行,无空格)

格式化解决的常见问题

  • 单行/压缩 JSON:API 或日志文件常为节省带宽而压缩,导致人工编辑困难。格式化恢复其可读性,方便审查和编辑。
  • 缩进不一致:粘贴自不同来源的 JSON 可能包含混合的制表符、空格或缩进深度不一致。重新格式化可规范这些差异,提高清晰度与一致性。
  • 大型/嵌套结构:深度嵌套的数组或对象(如配置文件或复杂 API 响应)经过格式化后更易管理,并可在支持的编辑器中折叠查看。

真实案例:格式化 API 响应

与第三方 API(如 AWS、Stripe 或谷歌云)集成时,响应通常为压缩格式以提升速度。格式化 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)
}