-1

我有一个结构良好的(人造)JSON 文件,我想以编程方式添加和更新值。

问题是 JSON 文件的当前结构对我和我的同事来说非常容易阅读,我们希望它保持相同(或非常相似)的缩进、行间距和键顺序等。

有没有办法用 Ruby 做到这一点?

4

1 回答 1

1

Ruby 的 JSON 支持pretty_generate,这是一个“漂亮”的生成器,但它绝不会尝试记住您是如何构建特定 JSON 数据文件的,也不应该记住。

foo = {'a' => 1, 'b' => %w[2 3]}
放 JSON.generate(foo)
{"a":1,"b":["2","3"]}
放 JSON.pretty_generate(foo)
{
  “一”:1,
  “乙”:[
    "2",
    “3”
  ]
}

JSON 是一种数据序列化格式,与 YAML 和 XML 一起,它旨在准确地移动数据。在保持任意行距或前导空白的同时这样做不会为序列化程序增加任何价值。

请记住,在输出中添加“漂亮”会增加被移动数据的大小,而不会提高质量:

放 JSON.generate(foo).size
21

放 JSON.pretty_generate(foo).size
43

仅将那个小哈希值“相当”地增加一倍,随着时间的推移,这会降低浏览器的吞吐量或服务器之间的跨网络吞吐量。我建议在最初调试代码时只关心“漂亮”的输出,然后在对数据移动感到满意后放弃它,以提高速度和效率。数据将是相同的。

如果您担心能够修改某些数据,请编写一个简单的读取器和/或 JSON 生成器,该生成器使用标准 Ruby 数据对象,然后让 JSON 对其进行序列化,并将输出写入文件。

于 2013-02-26T05:29:30.920 回答