我的应用程序中有一个Backbone模型,它不是一个典型的扁平对象,它是一个大型嵌套对象,我们将嵌套的部分存储在MySQL数据库的TEXT列中。Rails在请求的参数中将空数组转换为nils
我想在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/pull/8862
所以,现在的问题是, ,如何在嵌套的JSON API情况下最好地处理这个问题?
我发现它在做什么deep_munge https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/request.rb#L288。仍然不确定它为什么这样做。 – Karolis
链接到master/actionpack不再指向正确的线路。链接到标签或提交。 –