JSON 是一种相当简单的格式,这使得它易于使用、理解和解析。
但有时您需要的不仅仅是这些,让我们看看一些常见的 JSON 扩展。
扩展 JSON 正是它听起来的样子。这种 JSON 方言支持其他数据类型,例如日期,甚至允许您添加自己的类型。
下面的示例显示了常规 JSON 和 EJSON 在序列化和重新解析包含日期的对象时的差异。
const EJSON = require('ejson') const event = { name: 'test', created_at: new Date() } const stingifiedJSON = JSON.stringify(event) const stingifiedEJSON = EJSON.stringify(event) // stringified console.log(stingifiedJSON) // {"name":"test","created_at":"2024-11-06T00:00:00Z"} console.log(stingifiedEJSON) // {"name":"test","created_at":{"$date":1730851200000}} // re-parsed console.log(typeof JSON.parse(stingifiedJSON).created_at) // string console.log(EJSON.parse(stingifiedEJSON).created_at instanceof Date) // true
这对于重新解析序列化数据非常有用,例如通过网络发送数据时。
EJSON 是 MongoDB 在底层使用的内容(除了 BSON,JSON 的二进制格式)。
在本文列出的 JSON 扩展中,这是唯一一个常规 JSON 也能够解析的扩展!
换行符分隔的 JSON 通常用于一次流式传输一个 JSON 对象。
它是这样的:
{"name":"test","created_at":"2024-11-02T00:00:00Z"} {"name":"test 2","created_at":"2024-11-04T00:00:00Z"} {"name":"test 3","created_at":"2024-11-06T00:00:00Z"}
与常规 JSON 的不同之处在于,它没有将数据包装在数组中,并且每行后面都没有逗号(因为它是换行符分隔的)。这使其成为流媒体的完美候选者。
除了流式 JSON,我还看到这种格式(与 EJSON 一起)在 NoSQL 客户端中用于导出和导入文档。
对于下一个,有多种实现,每种都添加了自己的风格。让我们看看 JSON5,因为它是最完整的。
它们都试图实现相同的目标:用于管理配置文件的人类可读的、宽松的 JSON 格式。
JSON5 允许您添加注释、尾随逗号、换行符、取消引号键等等。
{ // You can add comments!! unquoted: '< unquoted keys!', singleQuotes: 'I can use "double quotes" here', lineBreaks: "Supports line breaks!\ No \n's!", }
如您所见,JSON 扩展有各种形状和大小。有些旨在供应用程序使用,其他则允许开发人员更轻松地创建配置文件。
下次您需要序列化/解析 JSON 时,看看这些扩展之一是否对您的用例有意义!
以上是用于编写配置文件和解析数据的 JSON 扩展的详细内容。更多信息请关注PHP中文网其他相关文章!