gpt4 book ai didi

json - JScript JSON 对象检查

转载 作者:行者123 更新时间:2023-11-28 14:04:14 25 4
gpt4 key购买 nike

我正在尝试检查 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'] 为 null 或不是对象。我理解这是因为在这种情况下数组“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。在这种情况下,您需要显式检查未定义

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 - JScript JSON 对象检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2766542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com