CoderTools

JSON格式化工具

格式化和验证您的JSON数据,使其更易于阅读和调试。支持压缩、美化和语法高亮功能。

输入JSON

格式化结果

如何使用JSON格式化工具

使用步骤

  1. 在左侧输入框中粘贴您的JSON数据。
  2. 点击"格式化"按钮将JSON数据格式化为易读的形式。
  3. 点击"压缩"按钮可以将JSON数据压缩为单行形式。
  4. 点击"自动修复"按钮自动修复常见的JSON语法错误。
  5. 点击"复制"按钮可将结果复制到剪贴板。
  6. 点击"清除"按钮可清空输入和输出区域。
  7. 使用"转义输出"开关可以转义输出结果,便于嵌入程序代码中。
  8. 使用"暗色模式"开关可以切换显示主题。

转义输出示例

当启用转义输出时,JSON字符串会被转义以便直接嵌入程序代码中。例如:

正常输出::

{ "message": "Hello \"World\"", "newline": "Line 1\nLine 2" }

转义输出::

{\n \"message\": \"Hello \\\"World\\\"\",\n \"newline\": \"Line 1\\nLine 2\"\n}

功能特点

  • 自动格式化:美化您的JSON数据,添加适当的缩进和换行。
  • 语法验证:检查JSON数据的语法错误并提供错误提示。
  • 语法高亮:使用不同颜色标记JSON的键值对和数据类型。
  • 压缩功能:将格式化的JSON转换为紧凑的单行形式,减少数据大小。
  • 自动修复:自动修复常见的JSON语法错误,如未加引号的键名和尾随逗号。
  • 转义输出:转义JSON字符串,可直接嵌入程序代码中。
  • 本地处理:所有数据处理在浏览器中完成,不会上传到服务器。
  • 即时处理:输入变更时自动处理并更新结果。

什么是JSON?

JSON(JavaScript对象表示法)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。JSON基于JavaScript语言的一个子集,但它是一种完全独立于语言的文本格式,被大多数编程语言支持用于解析和生成。JSON由Douglas Crockford在2000年代初期提出,并在ECMA-404RFC 8259中标准化。

JSON语法规则

  • 数据以键/值对表示
  • 数据由逗号分隔
  • 大括号{}保存对象
  • 方括号[]保存数组
  • 键必须是双引号包围的字符串
  • 值可以是字符串、数字、对象、数组、布尔值或null

JSON数据类型

类型 描述 示例
字符串 双引号包围的Unicode字符序列 "Hello World"
数字 整数或浮点数,不支持非数值 42, 3.14
对象 无序的键/值对集合 {"name": "John"}
数组 有序值集合 [1, 2, 3]
布尔 true或false true
null 空值 null

JSON格式化算法

JSON格式化过程主要涉及两个步骤:解析和重新生成。首先,解析器读取JSON字符串并构建内存表示,然后格式化器使用特定的缩进和换行重新生成字符串。以下是简化的格式化过程:

// Simplified JSON formatting implementation
function formatJSON(jsonStr, indentSize = 2) {
  try {
    // Step 1: Parse JSON string to JavaScript object
    const obj = JSON.parse(jsonStr);
    
    // Step 2: Convert object back to string with indentation
    return JSON.stringify(obj, null, indentSize);
  } catch (e) {
    // Handle invalid JSON
    throw new Error("Invalid JSON: " + e.message);
  }
}

// Usage example
const uglyJson = '{"name":"John","age":30,"city":"New York"}';
const prettyJson = formatJSON(uglyJson);
console.log(prettyJson);
/*
Output:
{
  "name": "John",
  "age": 30,
  "city": "New York"
}
*/

JSON和XML的比较

特性 JSON XML
语法 简洁,使用大括号和方括号 更复杂,使用标签和属性
文件大小 通常比XML小 通常比JSON大
解析速度 更快 较慢
数据类型 支持基本数据类型 所有数据都是文本
命名空间 不支持 支持
注释 不支持 支持
可用性 对开发者更友好 更结构化和严谨

常见问题和解决方案

问题:JSON解析错误 - 缺少逗号或括号

解决方案:检查所有对象和数组的闭合括号,确保每个键/值对后面都有逗号(最后一个除外)。

问题:JSON解析错误 - 无效的键值

解决方案:确保所有键都用双引号括起来,不支持单引号或无引号的键名。

问题:JSON数据大小问题

解决方案:对于大型JSON数据,考虑使用压缩版本进行传输,然后在客户端上格式化显示。

更多关于JSON的官方信息,请参阅以下资源:JSON.org | RFC 8259 | 维基百科: JSON