[英]How best to Compare JSON object values to a fixed array in JScript
[英]JScript JSON Object Check
我正在尝试检查json [0] ['DATA'] ['name'] [0] ['DATA'] ['first_0']在某些情况下是否存在json [0] ['DATA'] ['name']不包含任何内容。
我可以使用以下命令检查json [0] ['DATA'] ['name']
if (json[0]['DATA']['name'] == '') {
// DOES NOT EXIST
}
然而
if (json[0]['DATA']['name'][0]['DATA']['first_0'] == '' || json[0]['DATA']['name'][0]['DATA']['first_0'] == 'undefined') {
// DOES NOT EXIST
}
返回json [0] ['DATA'] ['name'] [0] ['DATA']为空或不是对象。 我了解这是因为数组'name'在这种情况下不包含任何内容,但是在其他情况下,first_0确实存在,并且json [0] ['DATA'] ['name']确实返回了一个值。
有没有一种方法可以直接检查json [0] ['DATA'] ['name'] [0] ['DATA'] ['first_0'],而无需执行以下操作?
if (json[0]['DATA']['name'] == '') {
if (json[0]['DATA']['name'][0]['DATA']['first_0'] != 'undefined') {
// OBJECT EXISTS
}
}
要检查是否设置了属性,您可以说
if (json[0]['DATA']['name']) {
...
}
除非该对象显式地可以包含0
(零)或''
(空字符串),因为它们的计算结果也为false
。 在这种情况下,您需要显式检查undefined
if (typeof(json[0]['DATA']['name']) !== "undefined") {
...
}
如果您有多个这样的对象属性链,请引用实用程序函数,例如:
function readProperty(json, properties) {
// Breaks if properties isn't an array of at least 1 item
if (properties.length == 1)
return json[properties[0]];
else {
var property = properties.shift();
if (typeof(json[property]) !== "undefined")
return readProperty(json[property], properties);
else
return; // returns undefined
}
}
var myValue = readProperty(json, [0, 'DATA', 'name', 0, 'DATA', 'first_0']);
if (typeof(myValue) !== 'undefined') {
// Do something with myValue
}
所以您问是否必须检查孩子是否存在,而父母可能不存在? 不,我不相信您可以做到。
编辑:只是这不是全部损失,所以所有括弧是什么?
json[0]['DATA']['name'][0]['DATA']['first_0']
可能是
json[0].DATA.name[0].DATA.first_0
对?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.