2016-03-15 44 views
0

我有一个json格式的字符串数组。我想循环解析它。它不在那个循环中解析。第一个元素之后,它的给出和意外令牌的错误。node.js不能从循环解析

如:

Array[{"id":10}, {"id":10}, {"id":10}, {"id":10}, {"id":10}] 
for(var i:Number=0; i<Array.length; i++) 
{ 
// passing each json string to function 
main_function(Array[i]); 
} 

function main_function(data) 
{ 
try{ 
var jsn= JSON.parse(data); 
}catch(err) 
{ 
} 
} 

这给人意外的标记错误信息。有什么可以解决的?

谢谢。

+1

你的第一行代码需要定义一个数组并赋值给一个实际的变量和你的'for'循环可以再参考那个变量。对已经是Javascript对象的数据调用'JSON.parse()'也没有意义。 'JSON.parse()'用于将JSON字符串转换为Javascript对象。当你传递它时,它什么也不做,它已经是一个Javascript对象了。 – jfriend00

回答

0

我不确定你想在这里做什么。但是,如果你想要做的与每个对象的东西(在你的情况下,5个对象与属性id10的值),你可以简单地做:

var myArray = [{"id":10}, {"id":10}, {"id":10}, {"id":10}, {"id":10}]; 
for(var i=0; i<myArray.length; i++) 
{ 
// passing each object to your main data function 
main_function(myArray[i]); 
} 

function main_function(data) 
{ 
    console.log(data.id); 
} 

你不需要JSON.parse因为你的阵列已经由对象组成。当你正在接收的是一个字符串,而不是直接对象数组时,你使用JSON.parse。例如,如果你有什么:

var arrayAsAJSONString = "[{\"id\":10}, {\"id\":10}, {\"id\":10}, {\"id\":10}, {\"id\":10}]"; 

你会做:

var myArray = JSON.parse(arrayAsAJSONString); 
// rest of the code exactly the same 
+0

数组值可能不同。我想要在循环或流中解析。 – swaraj

+0

@ user2393848你是否需要做“解析”取决于你在数组中有什么值,但是如果你没有在问题中指定它,我们不能算出任何结果 – Jcl