[英]How do I change nil to null before rendering JSON from a Ruby object?
我有一个像这样的对象:
#<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
}
当我渲染:json =>结果(结果是一堆)时,它会打印出来:
{"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}
JSON验证器抱怨nil
不是字符串。 JSON可以正确地为null
而不是字符串,因此我认为我只是将其转换而已,没什么大不了的。
因此,我快要陷入困境了,我意识到我想在使用对象进行某些操作之前先了解更多有关在对象中更新对象的信息。
update_attributes会将记录保存回数据库-不需要。 Assign_attributes只会更改对象中的属性值-一定要这样做。
但
Assign_attributes! 实际上并没有替换我的对象并将其推回结果中。
因此,对于某些我必须遍历哈希数组(结果)的事情,我试图在INPLACE中操纵每个Ruby对象,然后通过render将其提供服务。
可能有更好的方法来解决这个问题-但这是我的目标。 如何将nil更改为null?
你只需要打电话
render :json => result.to_json
它将为您处理所有转换,包括从nil
到null
的转换,例如
require 'json'
[nil].to_json
#=> "[null]"
{blah: nil}.to_json
#=> "{\"blah\":null}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.