3

Ruby オブジェクトを json に変換するためにRails 3.2シリアライゼーションを使用しています。

たとえば、Ruby オブジェクトを次の json にシリアライズしました

{
  "relationship":{
    "type":"relationship",
    "id":null,
    "followed_id": null
  }
}

クラス Relationship < ActiveRecord::Baseで次のシリアル化メソッドを使用する

def as_json(opts = {})
  {
   :type        => 'relationship',
   :id          => id,
   :followed_id => followed_id
  }
end

応答jsonで、null値を空の文字列、つまり空の二重引用符に置き換える必要があります。

どうすればこれを達成できますか?

よろしくお願いします、

4

3 に答える 3

4

おそらく最良の解決策ではありませんが、この回答に触発されました

def as_json(opts={})
  json = super(opts)
  Hash[*json.map{|k, v| [k, v || ""]}.flatten]
end

- 編集 -

jdoe のコメントによると、json 応答にいくつかのフィールドのみを含めたい場合は、次のようにすることをお勧めします。

def as_json(opts={})
  opts.reverse_merge!(:only => [:type, :id, :followed_id])
  json = super(opts)
  Hash[*json.map{|k, v| [k, v || ""]}.flatten]
end
于 2012-05-30T11:43:21.910 に答える