Ruby JSON.pretty_generate での余分な行の回避
概要
次のような形式の JSON を生成したいと考えています。
{
"a": {
"b": 1
},
"c": [
2
],
"d": [],
"e": {}
}
これは、Python、JavaScript、Go の標準 JSON サポートを使用して簡単に実行できます。
Ruby では、その正確な出力を取得するのに苦労しています。
$ ~/.rbenv/versions/2.6.3/bin/irb
irb(main):001:0> require 'json'
=> true
irb(main):002:0> puts JSON.pretty_generate({"a" => {"b" => 1}, "c" => [2], "d" => [], "e" => {}})
{
"a": {
"b": 1
},
"c": [
2
],
"d": [
],
"e": {
}
}
=> nil
問題点:
Ruby の標準 JSON サポートを取得して、必要な出力をレンダリングする簡単な方法はありますか?
解決策
✅ 空の配列/ハッシュが 3 行ではなく 1 行でレンダリングされる JSON を生成するのに、neatjson gem が便利であることがわかりました。
このオンライン ビジュアル ツールを使用して、アドホック オプションを見つけることができます。
gem installneatjson を使用するか、Gemfile に gem ‘neatjson’, ‘0.9’ を追加してインストールできます (この記事の執筆時点では 0.9 が最新バージョンでした。自由に調整してください)。
次に、それを使用して期待される出力を取得する方法を次に示します。
require 'json'
require 'neatjson'
structure = {
"a" => {"b" => 1},
"c" => [2],
"d" => [],
"e" => {},
"f" => "string with [ ] and { }"
}
json = JSON.neat_generate(
structure,
{
wrap: true,
indent: ' ',
after_colon: 1,
after_comma: 1
}
)
puts "#{json}\n"
これが役立つことを願っています。JSON.pretty_generate を設定する方法が見つかりませんでした。この問題は、neatjson で解決できます。 JSON 文字列を微調整するための無数のオプションが提供されます。