我正在尝试构建一个用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
}
答案 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服务器