2014-11-01 52 views
-2

使用该代码来访问JSON数组的元素:遍历JSON给出错误

var json = "{\"noteDetailList\": [ {\"linkName\": \"test1\"}]}" 

$.each(json, function() { 
         console.log(data) 
        }); 

迭代给出了这样的错误:

Uncaught TypeError: Cannot use 'in' operator to search for '43' in {"noteDetailList": [ {"linkName": "test1"}]} jquery-1.11.0.js:592isArraylike jquery-1.11.0.js:592jQuery.extend.each jquery-1.11.0.js:359(anonymous function) (index):24jQuery.event.dispatch jquery-1.11.0.js:4624elemData.handle jquery-1.11.0.js:4292 

拨弄:

http://jsfiddle.net/rsv0tn5e/1/

我的迭代不正确吗?

回答

2

你试图遍历一个字符串!无论是解析JSON成一个对象或者使用和实际的对象:

var jsonString = "{\"noteDetailList\": [ {\"linkName\": \"test1\"}]}"; 
 
var json = JSON.parse(jsonString); 
 

 
// OR 
 

 
var jsonObj = { 
 
    noteDetailList: [ 
 
    {linkName: "test1"} 
 
    ] 
 
}; 
 

 
iterateOverResult(json); 
 
iterateOverResult(jsonObj); 
 

 
function iterateOverResult(json) { 
 
    $.each(json, function(data) { 
 
    alert(data.toString()); 
 
    }); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

你要分析它喜欢:

JSON.parse(json); 

现在就来试试:

var json = "{\"noteDetailList\": [ {\"linkName\": \"test1\"}]}"; 

$.each(JSON.parse(json), function(data) { 
    console.log(data); 
});