javascript - 最不同的数据交换格式?

标签 javascript json yaml diff

JSON 之所以伟大,是因为它得到了广泛的支持,而且机器和人类都易于读写。

YAML 很棒,因为它更易于人类读写,并且支持更多数据类型。

TOML就像 INI 的改进版。

我想针对不同的东西进行优化:可微性。即,当运行标准 diff 时,了解同一文档的两个版本之间发生了什么变化有多容易?工具?

据我所知,Yarn竟然自己创造custom format他们的锁文件只是为了改善这方面。

是否有任何开源 JS 库可用于从对象生成可区分的输出?

最佳答案

Canonicalized然后美化JSON

规范化规范化了 type serializationsorts the fields .

美化后添加空格和行分隔符。

我们需要提出一个美化标准。

我希望看到这种可微性的 YAML 等价物。 也许这就像从 YAML 转换为 JSONC 然后将规范化的 JSONC 转换回 YAML 一样简单。 JSONC 到 YAML 的转换过程也需要标准化。 JSONC 规范器可能还不存在。 绝对不是这么简单。

注意:美化使它不再规范,但对于可微性是必要的。

RFC 提供了一个 sample ES6 JSON canonicalizer .

The following Open Source implementations have been verified to be compatible with JCS:

Open Source Implementations

规范化

原始

  {
    "numbers": [333333333.33333329, 1E30, 4.50,
                2e-3, 0.000000000000000000000000001],
    "string": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
    "literals": [null, true, false]
  }

删除空格并规范化序列化

{"numbers":[333333333.3333333,1e+30,4.5,0.002,1e-27],"string":"EURO$\u000f\nA'B\"\\\\\"/","literals":[null,true,false]}

排序

{"literals":[null,true,false],"numbers":[333333333.3333333,1e+30,4.5,0.002,1e-27],"string":"EURO$\u000f\nA'B\"\\\\\"/"}

美化

{
  "literals": [
    null,
    true,
    false
  ],
  "numbers": [
    333333333.3333333,
    1e+30,
    4.5,
    0.002,
    1e-27
  ],
  "string": "EURO$\u000f\nA'B\"\\\\\"/"
}

关于javascript - 最不同的数据交换格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42447949/

相关文章:

node.js - node.js 的 config.yaml 中 Heroku 环境变量的语法?

javascript - 从 Javascript 结果中 trim 特定数字

java - java中解析json对象,找不到对象

python - 从响应正文中删除文本

ruby-on-rails - 冒号(:) gives load error in locale YAML file

docker - Prometheus 连接 Kubernetes 时出现 "Connect: Connection Refused"

javascript - 从悬停 Action 中排除元素

javascript - 对象作为 React 子对象无效(发现 : [object Promise]) next js 13

Javascript - 在新窗口中的 toUpperCase

javascript - 用于检索 json 数据的 Angular Controller