個人的にこんがらがったので、メモ。
Rubyでは、調べた限りだとハッシュからjsonへの変換する方法が3コ見つかりました。
どちらも標準のjsonモジュールをインポートします。
1 | require 'json' |
この記事では、それら三つの変換方法の違いを述べていきます。
また、記述に間違いなどありましたら申し訳ありません。
(1) generateメソッドを使う場合
generateメソッドの第一引数にオブジェクトまたは配列を渡すことで、jsonに変換します。
:例
1 | hoge = {'age'=>18, 'tall'=>150} |
ここでのポイントは
第一引数にオブジェクトまたは配列を渡すこと
がgenerateメソッドの条件です。つまり、オブジェクト又は配列以外を渡すと変換に失敗します。
1 | str = "abcde" |
(2) to_jsonメソッドを使う場合
generateメソッドと比較して、to_jsonメソッドはあらゆるクラスに対して寛容です。
1 | hoge = {'age'=>18, 'tall'=>150} |
これがgenerateメソッドとの大きな違いになります。
(3) dumpメソッドを使う場合
(このメソッドの解説は正確さに欠けるかもしれません)
dumpメソッドはこれまでの例で示してきたすべての文字列や配列をjsonに変換してくれます。
ただ、dumpメソッドはマーシャルやヤムル(いずれもデータフォーマット)のload/dump実行の一部です。
ゆえに、上のメソッドと違い、ファイルに変換したjson文字列を書き込むことができます。
(4) まとめ
とりあえずjson文字列に変換したい場合、どのメソッドを使ってもよさそう。ファイルに書き込みとかするなら、dumpメソッドがよさそう。