🔥
Ruby のオブジェクトを整形された複数行の JSON 文字列に変換する
Ruby のオブジェクトを JSON 形式の文字列に変換する場合には JSON.#dump や #to_json が利用できます。
require "json"
user = { id: 1, name: "homu", age: 14 }
puts user.to_json
# => {"id":1,"name":"homu","age":14}
このようにレシーバのオブジェクトを JSON 形式の文字列に変換します。
しかし、 #to_json などは1行の JSON 文字列として変換するので、データ量が多い場合には見づらいケースもあります。
require "json"
response = {
message: nil,
results: [
{
address1: "東京都",
address2: "台東区",
address3: "浅草橋",
kana1: "トウキョウト",
kana2: "タイトウク",
kana3: "アサクサバシ",
prefcode: "13",
zipcode: "1110053"
}
],
status: 200
}
# 横に長いので見づらい
puts response.to_json
# => {"message":null,"results":[{"address1":"東京都","address2":"台東区","address3":"浅草橋","kana1":"トウキョウト","kana2":"タイトウク","kana3":"アサクサバシ","prefcode":"13","zipcode":"1110053"}],"status":200}
このような場合には JSON.#pretty_generate を利用すると複数行に分割して読みやすい形式の JSON 文字列として変換してくれます。
require "json"
response = {
message: nil,
results: [
{
address1: "東京都",
address2: "台東区",
address3: "浅草橋",
kana1: "トウキョウト",
kana2: "タイトウク",
kana3: "アサクサバシ",
prefcode: "13",
zipcode: "1110053"
}
],
status: 200
}
# 人間が読みやすい形に変換してくれる
puts JSON.pretty_generate(response)
# => {
# "message": null,
# "results": [
# {
# "address1": "東京都",
# "address2": "台東区",
# "address3": "浅草橋",
# "kana1": "トウキョウト",
# "kana2": "タイトウク",
# "kana3": "アサクサバシ",
# "prefcode": "13",
# "zipcode": "1110053"
# }
# ],
# "status": 200
# }
JSON 形式でデバッグ出力やログ出力する場合には便利でそうね。
Discussion