如何在Ruby / Rails中的JSON对象中创建未定义的值

时间:2016-02-18 13:55:54

标签: ruby-on-rails json

我正在尝试构建一个用Rails构建的JSON对象。

我的目标是:

person = {name: "david", age: 25, address: nil}

但地址显示为null且未定义

person.to_json ======>

{name: "david", 
 age: 25, 
 address: null  <---- I want this to be undefined
}

3 个答案:

答案 0 :(得分:5)

undefined无效JSON,即使它在javascript中有效。

  

JSON值可以是对象,数组,数字,字符串,true,false或   空。

http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf

答案 1 :(得分:4)

您可以使用Ruby方法compact在转换为json之前删除nil属性:

person = {name: "david", age: 25, address: nil}
person.compact.to_json

会返回:

{
  name: "david", 
  age: 25 
}

那样person.address将是未定义的

答案 2 :(得分:1)

如果您使用的是Jbuilder,则可以在视图的开头使用json.ignore_nil!,它不会生成任何带有nil值的json。更好的是,您可以在初始化程序中全局设置它:

# config/initializers/jbuilder.rb
Jbuilder.ignore_nil true

请记住在添加初始化程序

后重新启动rails服务器