簡體   English   中英

在從Ruby對象呈現JSON之前,如何將nil更改為null?

[英]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

它將為您處理所有轉換,包括從nilnull的轉換,例如

require 'json'

[nil].to_json
#=> "[null]"
{blah: nil}.to_json
#=> "{\"blah\":null}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM