我从网络服务返回 json 字符串,我可以轻松访问它,但有时它的行为很奇怪,我找不到原因。 这是我通过网络服务获取的 json 字符串
{"current":"2014-10-07T17:53:03+02:00","T1":{"0":[null],"1":[null],"2":[null],"3":[null],"4":[null],"5":[null],"6":[{"name":"ABC","value":63}]},"T2":{"0":[null],"1":[null],"2":[null],"3":[null],"4":[null],"5":[null]},"T3":{"0":[null],"1":[null],"2":[null],"3":[null],"4":[null],"5":[null]},"T4":{"0":[null],"1":[null],"2":[null],"3":[null],"4":[null],"5":[null]},"T5":{"0":[null],"1":[null],"2":[null],"3":[null],"4":[null],"5":[null]}}
我可以轻松访问它们,并且工作正常,除非任何 T1、T2、T3...等的第 0 个位置为空。它返回此错误TypeError:无法读取未定义的属性'0'
这就是我访问数据的方式
if(json.T1 != undefined) {
for (var i = 0; i < len; i++) {
if(json.T1[i][0] == null) {
t1.push(NaN)
}
else
{
t1.push(json.T1[i][0]["value"])
}
}
}
我不明白为什么这在所有情况下都有效,除了 T1、T2...等的第 0 个位置为空
最佳答案
你必须改变一些事情。 试试这个方法:http://jsfiddle.net/csdtesting/jww96u92/
var k = {
"current": "2014-10-07T17:53:03+02:00",
"T1": {
"0": [null],
"1": [null],
"2": [null],
"3": [null],
"4": [null],
"5": [null],
"6": [{
"name": "ABC",
"value": 63
}]
},
"T2": {
"0": [null],
"1": [null],
"2": [null],
"3": [null],
"4": [null],
"5": [null]
},
"T3": {
"0": [null],
"1": [null],
"2": [null],
"3": [null],
"4": [null],
"5": [null]
},
"T4": {
"0": [null],
"1": [null],
"2": [null],
"3": [null],
"4": [null],
"5": [null]
},
"T5": {
"0": [null],
"1": [null],
"2": [null],
"3": [null],
"4": [null],
"5": [null]
}
};
var t1 = [];
console.log(k);
if (k.T1 != undefined) {
$.each(k.T1, function(i, item) {
if (item[0] == null) {
t1.push(NaN)
} else {
alert("I just put " + item[0]["value"] + "in t1 array!Thanks!");
t1.push(item[0]["value"])
}
console.log(item);
});
console.log(t1);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
关于javascript - 在javascript中访问json数据出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26240448/