not*_*ceo 2 ruby activerecord json ruby-on-rails
我有一个像这样的 arel 对象:
#<Event:0x000001097d5fa0> {
:id => 6302,
:zone_id => nil,
:date => Thu, 02 Jan 2014 09:13:17 UTC +00:00,
:status => 1,
:created_at => Thu, 02 Jan 2014 09:13:17 UTC +00:00,
:updated_at => Fri, 03 Jan 2014 09:22:16 UTC +00:00,
:description => "New alert",
:controller_id => 699,
:event_type => 10,
:is_fault => false,
:delta => true
}
Run Code Online (Sandbox Code Playgroud)
当我渲染 :json => result (结果是一堆这些)时,它会打印出来:
{"controller_id"=>699, "created_at"=>"2014-01-02T09:13:17Z", "date"=>"2014-01-02T09:13:17Z", "delta"=>true, "description"=>"New alert", "event_type"=>10, "id"=>6302, "is_fault"=>false, "status"=>1, "updated_at"=>"2014-01-03T09:22:16Z", "zone_id"=>nil}
Run Code Online (Sandbox Code Playgroud)
并且 JSON 验证器抱怨nil不是字符串。JSON 应该null不是字符串,所以我想我只是转换它,没什么大不了的。
所以我陷入了困境,我意识到我想了解更多关于在对它做某事之前就地更新对象的信息。
update_attributes 会将记录保存回数据库 - 不希望那样。assign_attributes 只会改变对象中的属性值 - 想要这个。
但
分配_属性!实际上并没有替换我的对象并将其推回到结果中。
因此,对于我必须遍历哈希数组(结果)的某些事情,我试图在原地操作每个 Ruby 对象,然后通过渲染提供它。
可能有更好的方法来解决这个问题 - 但这是我的目标。如何将 nil 更改为 null ?
你只需要打电话
render :json => result.to_json
它将为您处理所有转换,包括nil到null例如
require 'json'
[nil].to_json
#=> "[null]"
{blah: nil}.to_json
#=> "{\"blah\":null}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6955 次 |
| 最近记录: |