JSON—JavaScript Object Notation—是用于结构化数据交换的无处不在的基于文本的格式。它由IETF作为RFC 8259和Ecma International作为ECMA-404共同标准化,它们共同定义了为现代API、日志、配置和数据库提供支持的紧凑、与语言无关的语法。
JSON值是对象、数组、字符串、数字或字面量true、false或null之一;对象将字符串映射到值,数组则包含有序的值——结构字符周围允许有无关紧要的空白(RFC 8259,ECMA-404)。尽管JSON源于JavaScript,但它与语言无关,几乎在任何地方都受支持(MDN: JSON)。在线路上,事实上的和推荐的编码是 UTF-8(RFC 8259 §8.1)。为了额外的互操作性安全,I-JSON配置文件(RFC 7493)收紧了关于编码和数值范围的规则。
在JavaScript中,全局JSON对象公开了两个主力:JSON.parse(带有一个可选的reviver)和JSON.stringify(带有用于美化打印的replacer/spacing),如MDN上所记录(parse,stringify)。
JSON的数字语法是十进制的,但规范并未规定精度或整数/浮点数的区别。实现方式自行选 择如何表示它们(RFC 8259 §6)。在JavaScript和Node.js中,Number是IEEE-754双精度,这意味着只有在[−(2^53−1), 2^53−1]范围内的整数才是完全安全的——参见Number.MAX_SAFE_INTEGER和BigInt类型。这就是为什么公共API通常将ID作为字符串传输并明确验证“安全整数”的原因。
随着使用的成熟,出现了用于寻址和就地修改JSON的标准。JSON指针(RFC 6901)是一种微小的、斜杠分隔的语法,用于定位值(例如,/a/b/0),并为~和/提供了转义规则。JSON补丁(RFC 6902)将部分更新建模为有序操作(add、remove、replace、move、copy、test),并以application/json-patch+json的形式传输。对于更简单的差异,JSON合并补丁(RFC 7386)使用文档形状的合并:存在的字段被添加/替换;将字段设置为null会删除它。许多框架都原生支持这两种形式中的一种或两种。
JSON本身是无模式的,但生态系统依赖于模式进 行验证、文档编制和代码生成。JSON模式2020-12系列规定了诸如type、properties、items和组合关键字等约束,并与OpenAPI 3.1保持一致。对于以代码生成为中心的工作流,JSON类型定义(RFC 8927)提供了一种故意降低表达能力的语言,可以可预测地映射到主流类型系统。
传统的JSON期望每个有效负载有一个完整的文本,这使得流式处理日志和长寿命响应变得复杂。有两种模式可以提供帮助:
application/json-seq。当带宽或速度占主导地位时,“二进制JSON”格式在保留JSON数据模型的同时,用效率换取了人类可读性:
因为JSON只是文本,所以大多数风险来自于您如何传输和处理它:
<script>请求数据)是CORS之前的跨域请求变通方法,但很危险——它会执行任意脚本。请优先使用带有真实application/json响应的CORS(OWASP: JSONP Abuse)。JSON在RFC 4627 (2006)下首次亮相;注册的媒体类型是application/json,其规范现在指向RFC 8259。由于UTF-8是公共互联网上的默认设置,因此JSON响应上的“charset”参数通常是不必要的。
开发人员通常希望在配置文件中使用注释、尾随逗号或单引号字符串。这超出了标准JSON的范围,但JSON5为人工编辑的文件提供了一个文档齐全的超集。除非您控制两端,否则避免通过公共API发送JSON5。
JSON的成功来自于其小巧的表面积、广泛的语言支持以及一系列相邻标准——指针、补丁、模式、序列——这些标准涵盖了分布式系统的混乱现实。理解基础知识(语法、编码、数字),依靠正确的相邻标准,它将继续在各种堆栈和服务中带来红利(RFC 8259,ECMA-404,RFC 6901,RFC 6902,RFC 7386,JSON Schema,JTD,RFC 7464,NDJSON)。
JSON(JavaScript对象表示法)是一种轻量级的数据交换格式,易于人类阅读和编写,也易于机器解析和生成。它广泛用于在Web应用程序中传输数据。
格式化JSON通过添加适当的缩进和换行使其易于人类阅读。这在处理缩小或压缩的JSON数据、调试或审查API响应时特别有用。
JSON验证检查您的JSON字符串是否符合JSON规范。它识别语法错误,如缺少逗号、未闭合的括号或不当的引号,帮助您及早发现错误。
代码视图将格式化的JSON显示为带有语法高亮的文本,类似于在代码编辑器中的显示方式。树形视图将JSON呈现为交互式、可折叠的结构,您可以在其中展开和折叠嵌套的对象和数组。
是的!所有JSON格式化和验证都完全在您的浏览器中进行。您的数据永远不会离开您的计算机,确保完全的隐 私和安全。
是的,您可以使用"打开文件"按钮上传JSON文件。该工具将读取文件并立即显示格式化的输出。
常见的JSON错误包括:键值对之间缺少逗号、对字符串使用单引号而不是双引号、尾随逗号、未闭合的括号或大括号以及未加引号的键。
是的,使用"复制"按钮将格式化的JSON复制到剪贴板。这对于将清理后的JSON粘贴到代码或文档中很有用。