左側に Ruby を貼り付けて 「変換」 をクリック — JSON に変換しますRuby コードを貼り付け

このツールでできること

属性がたくさんある Ruby クラスから、テストや API 呼び出し、フィクスチャ用の JSON ペイロードを手書きするのは正直しんどい作業です。Ruby をここに貼れば、すべてのフィールドを保ったまま有効な JSON が返ってきます。単一の Order クラスでも、アドレスを持つネストした Customer でも、Rails のモデル定義ファイルまるごとでも、実行時に to_json で得られるのと同じ出力になります。

この変換ツールは、Ruby が実際にどうシリアライズするかを踏まえて動きます。json 標準ライブラリ:symbol キーを文字列に変換し(JSON のキーは文字列のみなので)、nilnull になり、TimeDate は ISO-8601 文字列として出てきます。シンボルキーと文字列キーを混ぜたハッシュはどちらも正規化され、混合型の配列もそのまま保たれます。ネストしたインスタンス — Order の中の Address など — は文字列化ではなく、ネストした JSON オブジェクトに展開されます。詳しくは ruby-doc.org を参照してください。

gem や Rails アプリのファイルまるごとを貼り付けると、トップレベルの各クラスがそれぞれ独立した JSON エントリとして出力され、initialize で設定されるインスタンス変数も出力に反映されます。attr_accessorattr_reader、素の @ivars すべてを拾います。StructOpenStruct を見つけた場合も、メンバーを同じ扱いで処理します。メソッドはスキップされ、データだけが JSON に入ります。

使い方

ステップは 3 つ。数行貼るのも models/ フォルダ全部貼るのも同じ操作です。

1

Ruby を貼り付ける(またはサンプルを試す)

左側のエディタに Ruby をそのまま貼ってください。クラス定義ハッシュリテラル複数クラス.new インスタンス — どれも OK です。最初に実例を見たい場合は サンプルを読み込む をクリックしてください。

コードを削る必要はありません — Ruby の構文require 行、コメントはそのままで大丈夫です。データでない部分はパーサが無視します。エッジケースについては JSON 標準ライブラリのドキュメント が参考になります。

2

「変換」を押す

緑色の 変換 ボタンをクリック。ツールが Ruby を読み取り、すべてのクラスと属性を保ったまま一度に JSON を出力します。処理中は短いローディング表示が出ます。

3

JSON をコピー

右側のパネルに、インデントされた 仕様準拠 の JSON が表示されます。Postman のリクエスト、テストフィクスチャ、Rails の seeds ファイル、API ドキュメントなどにコピーしてください。

こんなときに便利

RSpec のテストフィクスチャ

20 の属性を持つ Order モデルで、外部サービスをスタブするための JSON が必要。クラスを貼ってペイロードを取得し、spec に貼り付けるだけ。

Rails アプリのシード

大量の <code>Product.new(...)</code> 行を、db/seeds 用やステージングのデータローダ用の JSON シードファイルに変換 — 手打ち不要。

モデルと一致するドキュメント

Ruby クラスから直接 README や API リファレンス用の JSON サンプルを生成。ドキュメントがコードとズレる心配がありません。

シリアライズ問題のデバッグ

<code>to_json</code> の挙動がおかしいときは、Ruby をここに貼って期待される JSON の形を確認し、アプリが実際に送っているものと比較できます。

よくある質問

複数のクラスをまとめて貼っても大丈夫ですか?

はい。ファイルまるごと貼って大丈夫です。トップレベルの各クラスがそれぞれ独立した JSON エントリとして出力され、ネストしたクラスはネストしたオブジェクトに展開されます。メソッドは無視され、インスタンス変数とその値だけが出力に入ります。

シンボルと文字列キーはどう扱われますか?

JSON のキーは文字列のみなので、:name"name" になります — json 標準ライブラリ と同じ挙動です。シンボルキーと文字列キーが混在するハッシュでも、出力では両方とも文字列に正規化されます。

Time、Date、BigDecimal はどうなりますか?

TimeDateTime は ISO-8601 文字列になります。Date は ISO 形式の日付文字列です。BigDecimal は JSON の数値になります。nilnull です。Range と正規表現は文字列化されます — 他の標準型は Ruby のデフォルトの to_json と同じマッピングです。

Struct と OpenStruct には対応していますか?

はい。メンバー :name, :price を持つ Struct は、それらをキーに持つ JSON オブジェクトとしてシリアライズされます。OpenStruct も同じで、動的属性を拾って出力します。

コードは保存されますか?

Ruby は変換のためにバックエンドに送られますが、永続化はしません — ペイロードをログに残すことはありません。オンラインツール全般の常ですが、本当に機密性の高いコードなら一応中身を確認してから使ってください。

コードにメソッドやブロックが含まれている場合は?

メソッドとブロックはスキップされます — データではないからです。JSON にはクラス名、initialize 由来のインスタンス変数、リテラル値だけが入るので、モデルの残りの部分はきれいに出力されます。

あわせて便利なツール

Ruby → JSON は一部です。これらと組み合わせるとさらに便利です: