我有JSON对象,我想检查在该JSON对象中设置的密钥
这是JSON对象
var Data_Array = {
"Private": {
"Price": {
"Adult": "18",
"Child": [{
"FromAge": "0",
"ToAge": "12",
"Price": "10"
}]
}
}
}
如果您看到 Child 的JSON对象不存在,那么如何检查
var Data_Array = {
"Private": {
"Price": {
"Adult": "18"
}
}
}
我尝试了
if(Data_Array.Private.Price.Child[0].Price != "undefined"){
...
}
但是它显示了我的错误
未捕获的TypeError:无法读取属性
我无法知道该怎么做。
答案 0 :(得分:8)
var json = {key1: 'value1', key2: 'value2'}
"key1" in json ? console.log('key exists') : console.log('unknown key')
"key3" in json ? console.log('key exists') : console.log('unknown key')
用于子键
var Data_Array = {
"Private": {
"Price": {
"Adult": "18",
"Child": [{
"FromAge": "0",
"ToAge": "12",
"Price": "10"
}]
}
}
}
'Child' in Data_Array.Private.Price ? console.log('Child detected') : console.log('Child missing')
创建变量子
var Data_Array = {
"Private": {
"Price": {
"Adult": "18",
"Child": [{
"FromAge": "0",
"ToAge": "12",
"Price": "10"
}]
}
}
}
var child = 'Child' in Data_Array.Private.Price && Data_Array.Private.Price.Child[0] || 'there is no child'
console.log(child)
如果没有孩子
var Data_Array = {
"Private": {
"Price": {
"Adult": "18"
}
}
}
var child = 'Child' in Data_Array.Private.Price && Data_Array.Private.Price.Child[0] || 'there is no child'
console.log(child)
答案 1 :(得分:1)
您可以将MSDN用于对象。
如果指定的属性位于指定的对象中,
in
运算符将返回true
。
if ('Child' in Data_Array.Private.Price) {
// more code
}
答案 2 :(得分:1)
尝试从未定义的对象获取属性将引发异常。您需要在整个链中检查每个属性是否存在(和类型)(除非您确定结构)。
使用Lodash:
if(_.has(Data_Array, 'Private.Price.Child')) {
if(Array.isArray(Data_Array.Private.Price.Child) && Data_Array.Private.Price.Child.length && Data_Array.Private.Price.Child[0].Price) {
// Its has a price!
}
}
答案 3 :(得分:0)
检查Child是否未定义
if (typeof Data_Array.Private.Price.Child!== "undefined") {
...
}
或者您可以使用in
:
if ("Child" in Data_Array.Private.Price) {
...
}
或者您可以使用underscore.js的_.isUndefined(Data_Array.Private.Price.Child)