我的应用程序中有一个 Backbone 模型,它不是典型的平面对象,它是一个大型嵌套对象,我们将嵌套部分存储在 MySQL 数据库的 TEXT 列中。
我想在 Rails API 中处理 JSON 编码/解码,以便从外部看起来您可以 POST/GET 这个大型嵌套 JSON 对象,即使它的一部分存储为字符串化 JSON 文本。
然而,我遇到了一个问题,Rails 神奇地将空数组转换为nil
价值观。例如,如果我发布此内容:
{
name: "foo",
surname: "bar",
nested_json: {
complicated: []
}
}
我的 Rails 控制器看到了这个:
{
:name => "foo",
:surname => "bar",
:nested_json => {
:complicated => nil
}
}
所以我的 JSON 数据已被更改..
以前有人遇到过这个问题吗?为什么 Rails 会修改我的 POST 数据?
UPDATE
他们是这样做的:
https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/request.rb#L288 https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/request.rb#L288
这就是他们这样做的原因:
https://github.com/rails/rails/pull/8862 https://github.com/rails/rails/pull/8862
所以现在的问题是,在我的嵌套 JSON API 情况下如何最好地处理这个问题?