2014-10-21

ActiveSupport 4.1+ fix back original Ruby JSON

Rails ActiveSupport 4.1+ 有很多問題,在於 custom json 的部分,像是 json merge之類的

今天找到了蓋回來的方式,類似

[Object, Array, FalseClass, Float, Hash, Integer, NilClass, String, TrueClass].each do |klass|
  klass.class_eval do
    alias_method :to_json , :to_json_without_active_support_encoder
  end
end

這樣就會變成 original Ruby JSON 而非 ActiveSupport/JSON

之後就可以使用類似的語法來建立JsonString(json source merge)

class JsonString
  def initialize(source)
    @source = source
  end
  def to_json(encoder)
    @source
  end
end

{:values => JsonString.new("{\"wer\":123}")}.to_json
#=> {"values":{"wer":123}}

Orz" &這篇花了一天時間來 trace code ...||| 本來想用正規的方式幹,但發覺到最後只剩下覆寫回來的方式之類的,因為用它的方式實在是太困難了啊|||

沒有留言:

張貼留言