アプリにバックボーン モデルがありますが、これは典型的なフラット オブジェクトではありません。これは大きなネストされたオブジェクトであり、ネストされた部分を MySQL データベースの TEXT 列に格納します。
Rails API で JSON エンコーディング/デコーディングを処理して、その一部が文字列化された JSON テキストとして格納されている場合でも、この 1 つの大きなネストされた JSON オブジェクトを POST/GET できるように見えるようにしたかったのです。
nil
しかし、Rails が魔法のように空の配列を値に変換するという問題に遭遇しました。たとえば、これを投稿した場合:
{
name: "foo",
surname: "bar",
nested_json: {
complicated: []
}
}
私のRailsコントローラーはこれを見ます:
{
:name => "foo",
:surname => "bar",
:nested_json => {
:complicated => nil
}
}
そして、私のJSONデータが変更されました..
以前にこの問題に遭遇した人はいますか? Rails が私の POST データを変更するのはなぜですか?
アップデート
彼らがそれを行う場所は次のとおりです。
https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/request.rb#L288
そして、これが〜なぜ彼らがそれをするのかです:
https://github.com/rails/rails/pull/8862
さて、問題は、ネストされた JSON API の状況でこれをどのように処理するのが最善かということです。