首页 >web前端 >js教程 >用于编写配置文件和解析数据的 JSON 扩展

用于编写配置文件和解析数据的 JSON 扩展

Susan Sarandon
Susan Sarandon原创
2024-11-07 00:29:021069浏览

JSON Extensions for writing config files and parsing data

JSON 是一种相当简单的格式,这使得它易于使用、理解和解析。
但有时您需要的不仅仅是这些,让我们看看一些常见的 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 也能够解析的扩展!

NDJSON

换行符分隔的 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 客户端中用于导出和导入文档。

JSONC / JSON5

对于下一个,有多种实现,每种都添加了自己的风格。让我们看看 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn