如何将nil序列化为JSON为nil,而不是空位?

Rat*_*iku 0 javascript ruby json ruby-on-rails ruby-on-rails-5

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

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
Run Code Online (Sandbox Code Playgroud)

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

:javascript
  window.MyObj = {
    var1: #{@var1},
    var2: #{@var1},
    var2: #{@var3}
  }
Run Code Online (Sandbox Code Playgroud)

问题是,当值为nil时,它将呈现为空白空间,而不是nil本身.

:javascript
  window.MyObj = {
    var1: ,
    var2: 33,
    var2: 
  }
Run Code Online (Sandbox Code Playgroud)

怎么治愈呢?

Ale*_*kin 6

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

require 'json'
json = {var1: nil, var2: 42, var2: nil}.to_json
#? "{\"var1\":null,\"var2\":42,\"var3\":null}"
Run Code Online (Sandbox Code Playgroud)

然后:

:javascript
  window.MyObj = json
Run Code Online (Sandbox Code Playgroud)