首页 > 解决方案 > 如何将 nil 序列化为 JSON 为 nil,而不是空的地方?

问题描述

在我的控制器/动作中,我有一些值为 nil

def my_action
  @var1 = get_boolean_value || nil
  @var2 = get_int_value || nil
  @var3 = get_string_value || nil

  # there many more, any one can happen to be nil
end

当我在其中的视图中创建 JSON 对象时,nil 值会呈现为空白:

:javascript
  window.MyObj = {
    var1: #{@var1},
    var2: #{@var1},
    var2: #{@var3}
  }

问题是当一个值为 nil 时,它被呈现为一个空白空间,而不是 nil 本身。

:javascript
  window.MyObj = {
    var1: ,
    var2: 33,
    var2: 
  }

怎么治呢?

标签: javascriptruby-on-railsjsonrubyruby-on-rails-5

解决方案


人们不应该重新发明轮子。使用JSONruby标准库序列化json:

require 'json'
json = {var1: nil, var2: 42, var2: nil}.to_json
#⇒ "{\"var1\":null,\"var2\":42,\"var3\":null}"

接着:

:javascript
  window.MyObj = json

推荐阅读