我的应用程序中有一个 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 数据?
更新
这是他们这样做的地方:
https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/request.rb#L288
这就是~为什么他们这样做:
https://github.com/rails/rails/pull/8862
所以现在的问题是,如何在我的嵌套 JSON API 情况下最好地处理这个问题?