使用适当的缩进格式化和美化您的 JSON 数据。使原始 JSON 可读,并提供语法高亮和验证。
使用这个简单的工具格式化和美化你的 JSON
格式化后的 JSON 将出现在这里...
JSON(JavaScript 对象表示法)是一种轻量级的数据交换格式,已成为 Web 应用程序中数据交换的标准。尽管它简单,但当 JSON 数据被压缩或缺乏适当格式时,可能会变得难以阅读。此工具帮助您将原始、未格式化的 JSON 字符串转换为结构良好、缩进格式,使其更易于阅读和分析。
JSON 格式化(也称为“美化打印”)通过添加一致的缩进、换行和空格,使 JSON 数据的层次结构在视觉上显而易见。这在处理复杂嵌套对象或大型数据集时尤其有价值,因为在这些情况下,元素之间的关系可能会变得难以辨别。
我们的 JSON 格式化工具提供了一个简单的界面,可以通过适当的缩进和结构来美化您的 JSON 数据,使其对人类更具可读性,同时保持其对机器的有效性。
JSON 基于两种主要结构:
{}
包围的名称/值对集合。每个名称后面跟着一个冒号 :
,对之间用逗号 ,
分隔。1 {"name": "John", "age": 30, "city": "New York"}
2
[]
包围的有序值列表。值之间用逗号 ,
分隔。1 ["apple", "banana", "cherry"]
2
JSON 值可以是:
42
或 3.14159
true
或 false
null
{"key": "value"}
[1, 2, 3]
有效的 JSON 必须遵循以下语法规则:
常见的语法错误包括:
JSON 格式化通过以下方式将紧凑的、压缩的 JSON 转换为更可读的形式:
解析:首先解析 JSON 字符串以确保其有效,并创建数据结构的内存表示。
缩进:每个嵌套级别的对象和数组缩进(通常为 2 或 4 个空格),以在视觉上表示层次结构。
换行:在每个属性或数组元素后添加新行以提高可读性。
空格:在冒号和逗号周围添加一致的空格。
例如,这个压缩的 JSON:
1{"name":"John Doe","age":30,"address":{"street":"123 Main St","city":"Anytown","state":"CA"},"hobbies":["reading","hiking","photography"]}
2
变成这个格式化的 JSON:
1{
2 "name": "John Doe",
3 "age": 30,
4 "address": {
5 "street": "123 Main St",
6 "city": "Anytown",
7 "state": "CA"
8 },
9 "hobbies": [
10 "reading",
11 "hiking",
12 "photography"
13 ]
14}
15
我们的格式化工具使用每级 2 个空格的标准缩进,这是开发社区中的常见约定,并在紧凑性和可读性之间提供了良好的平衡。
JSON 格式化的一个关键方面是验证。在 JSON 可以格式化之前,它必须根据 JSON 规范在语法上是有效的。常见的验证错误包括:
语法错误:
数据类型错误:
undefined
或 NaN
当您遇到无效 JSON 时,错误消息可以帮助识别问题。大多数 JSON 解析器会指示解析失败的位置,这可以帮助定位问题。我们的工具提供清晰的错误消息,以帮助您识别和修复 JSON 数据中的问题。
JSON 格式化在许多场景中都很有价值:
在处理 RESTful API 时,格式化 JSON 使得:
许多现代应用程序使用 JSON 作为配置:
格式化 JSON 在以下情况下有帮助:
适当格式化的 JSON 在以下情况下至关重要:
清晰的 JSON 格式化对于:
虽然我们的基于 Web 的 JSON 格式化工具对于快速格式化任务很方便,但在不同场景中还有几种替代方案:
现代浏览器包括 JSON 格式化功能:
大多数开发环境提供 JSON 格式化:
对于终端用户或自动化:
jq
是一个强大且灵活的命令行 JSON 处理器json_pp
在许多 Unix 系统上预装python -m json.tool
使用 Python 提供快速格式化在应用程序中格式化 JSON:
1// JavaScript
2const formatted = JSON.stringify(jsonObject, null, 2);
3
1# Python
2import json
3formatted = json.dumps(json_object, indent=2)
4
1// Java with Gson
2Gson gson = new GsonBuilder().setPrettyPrinting().create();
3String formatted = gson.toJson(jsonObject);
4
1# Ruby
2require 'json'
3formatted = JSON.pretty_generate(json_object)
4
1// PHP
2$formatted = json_encode($jsonObject, JSON_PRETTY_PRINT);
3
JSON 是由道格拉斯·克罗克福德在 2000 年代初创建的,作为 XML 的轻量级替代方案。该格式源自 JavaScript 对象字面量语法,但旨在独立于语言。2006 年,JSON 在 RFC 4627 中正式规范,并迅速因其简单性和与 JavaScript 的兼容性而获得广泛应用。
在 JSON 出现之前,XML 是数据交换的主导格式,但其冗长和复杂性使其在许多应用中变得笨重。JSON 提供了一种更简洁的语法,更易于人类和机器阅读和编写。它还完美契合 JavaScript 的对象模型,使其成为 Web 应用程序的自然选择。
随着 AJAX 和 RESTful API 在 2000 年代中期的兴起,JSON 的采用加速了。到 2010 年代,它已成为 Web API、配置文件和 NoSQL 数据库(如 MongoDB 和 CouchDB)中数据交换的事实标准。
如今,几乎所有编程语言都支持 JSON,并在无数 Web 应用中使用。它的简单性、灵活性和通用支持使其成为现代计算中最重要的数据格式之一。
以下是如何在各种编程语言中格式化 JSON 的示例:
1// JavaScript JSON 格式化
2function formatJSON(jsonString) {
3 try {
4 const parsedData = JSON.parse(jsonString);
5 return JSON.stringify(parsedData, null, 2);
6 } catch (error) {
7 return `错误:${error.message}`;
8 }
9}
10
11// 示例用法
12const rawJSON = '{"name":"John","age":30,"city":"New York"}';
13console.log(formatJSON(rawJSON));
14
1# Python JSON 格式化
2import json
3
4def format_json(json_string):
5 try:
6 parsed_data = json.loads(json_string)
7 return json.dumps(parsed_data, indent=2)
8 except json.JSONDecodeError as e:
9 return f"错误:{str(e)}"
10
11# 示例用法
12raw_json = '{"name":"John","age":30,"city":"New York"}'
13print(format_json(raw_json))
14
1// Java JSON 格式化使用 Gson
2import com.google.gson.Gson;
3import com.google.gson.GsonBuilder;
4import com.google.gson.JsonSyntaxException;
5
6public class JSONFormatter {
7 public static String formatJSON(String jsonString) {
8 try {
9 Gson gson = new GsonBuilder().setPrettyPrinting().create();
10 Object parsedJson = gson.fromJson(jsonString, Object.class);
11 return gson.toJson(parsedJson);
12 } catch (JsonSyntaxException e) {
13 return "错误:" + e.getMessage();
14 }
15 }
16
17 public static void main(String[] args) {
18 String rawJSON = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
19 System.out.println(formatJSON(rawJSON));
20 }
21}
22
1// PHP JSON 格式化
2function formatJSON($jsonString) {
3 $result = json_decode($jsonString);
4 if (json_last_error() !== JSON_ERROR_NONE) {
5 return "错误:" . json_last_error_msg();
6 }
7 return json_encode($result, JSON_PRETTY_PRINT);
8}
9
10// 示例用法
11$rawJSON = '{"name":"John","age":30,"city":"New York"}';
12echo formatJSON($rawJSON);
13
1# Ruby JSON 格式化
2require 'json'
3
4def format_json(json_string)
5 begin
6 parsed_data = JSON.parse(json_string)
7 return JSON.pretty_generate(parsed_data)
8 rescue JSON::ParserError => e
9 return "错误:#{e.message}"
10 end
11end
12
13# 示例用法
14raw_json = '{"name":"John","age":30,"city":"New York"}'
15puts format_json(raw_json)
16
1// C# JSON 格式化使用 Newtonsoft.Json
2using Newtonsoft.Json;
3using System;
4
5class JSONFormatter
6{
7 public static string FormatJSON(string jsonString)
8 {
9 try
10 {
11 object parsedJson = JsonConvert.DeserializeObject(jsonString);
12 return JsonConvert.SerializeObject(parsedJson, Formatting.Indented);
13 }
14 catch (JsonException e)
15 {
16 return $"错误:{e.Message}";
17 }
18 }
19
20 static void Main()
21 {
22 string rawJSON = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
23 Console.WriteLine(FormatJSON(rawJSON));
24 }
25}
26
1// Go JSON 格式化
2package main
3
4import (
5 "encoding/json"
6 "fmt"
7)
8
9func formatJSON(jsonString string) string {
10 var parsedData interface{}
11 err := json.Unmarshal([]byte(jsonString), &parsedData)
12 if err != nil {
13 return fmt.Sprintf("错误:%s", err.Error())
14 }
15
16 formattedBytes, err := json.MarshalIndent(parsedData, "", " ")
17 if err != nil {
18 return fmt.Sprintf("错误:%s", err.Error())
19 }
20
21 return string(formattedBytes)
22}
23
24func main() {
25 rawJSON := `{"name":"John","age":30,"city":"New York"}`
26 fmt.Println(formatJSON(rawJSON))
27}
28
在处理 JSON 格式化时,请注意以下潜在挑战:
非常大的 JSON 文件(几兆字节或更多)可能会在基于浏览器的格式化器中造成性能问题。在这种情况下:
jq
极其嵌套的 JSON(超过 10-20 层)即使在格式化后也可能变得难以导航。在这些情况下:
JSON 支持 Unicode,但某些格式化器可能对某些字符存在问题:
JSON 并未指定数字的精度,这可能导致非常大的整数或浮点值出现问题:
有效的 JSON 包括空对象 {}
和数组 []
,应正确格式化:
{}
[]