访问javascript中的json数据时出现奇怪错误

访问javascript中的json数据时出现奇怪错误,javascript,arrays,json,Javascript,Arrays,Json,我从web服务返回json字符串,我可以很容易地访问它,但有时它的行为很奇怪,我找不到原因。 下面是我通过web服务获得的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

我从web服务返回json字符串,我可以很容易地访问它,但有时它的行为很奇怪,我找不到原因。 下面是我通过web服务获得的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"])
            }
        }
     }
if(json.T1!=未定义){
对于(变量i=0;i

我不明白为什么这在所有情况下都有效,比如T1、T2……等的第0位为空,你必须改变一些事情。 试着这样做:

var k={
“当前”:“2014-10-07T17:53:03+02:00”,
“T1”:{
“0”:[null],
“1”:[null],
“2”:[null],
“3”:[null],
“4”:[null],
“5”:[null],
"6": [{
“名称”:“ABC”,
“价值”:63
}]
},
“T2”:{
“0”:[null],
“1”:[null],
“2”:[null],
“3”:[null],
“4”:[null],
“5”:[零]
},
“T3”:{
“0”:[null],
“1”:[null],
“2”:[null],
“3”:[null],
“4”:[null],
“5”:[零]
},
“T4”:{
“0”:[null],
“1”:[null],
“2”:[null],
“3”:[null],
“4”:[null],
“5”:[零]
},
“T5”:{
“0”:[null],
“1”:[null],
“2”:[null],
“3”:[null],
“4”:[null],
“5”:[零]
}
};
var t1=[];
控制台日志(k);
如果(k.T1!=未定义){
$。每个(k.T1,功能(i,项目){
如果(项[0]==null){
t1.推送(NaN)
}否则{
警报(“我刚刚在t1数组中放入了“+item[0][“value”]+”!谢谢!”);
t1.推送(项[0][“值”])
}
控制台日志(项目);
});
控制台日志(t1);
}

这是因为len属性不能表示T1对象中项目的正确长度。 尝试通过枚举T1对象属性来获取长度

var len = 0;
for(var item in json.T1){
   len++;
}

然后,尝试您提供的脚本。这应该是可行的。

该错误意味着您试图访问一个不存在的属性,即
json.T1[i]
返回
未定义的
len
的值是多少?如果大于6,那么这就是为什么会出现错误
json.T1[7]
在您的示例中不存在。为什么不在这里测试
undefined
json.T1[i]
OP再也没有提到jQuery了。还有,你改变了什么?出了什么问题?仅仅发布代码并说“试试这个”并没有真正的帮助。上面显示的代码并不完整。json val是什么?初始化在哪里?len是什么?因此,我尝试使用相同的逻辑,但使用其他方式访问[0]元素(如果您在代码中看到),并且没有导致错误。我认为这是一个解决方案。如果我拥有所有代码,我会列举更多他/她的错误。但在某种程度上,myabe你是对的,我对本案的逻辑给出了一个有效的解决方案,但我没有回答有关错误本身的问题。我更实际。:)