在循环中,JSON字符串被视为字面字符串

9
我猜这应该是一个简单的问题,但我对JS还不太熟悉,无法找到解决方法。
基本上,当我将JSON字符串传递给函数并尝试通过传递的变量进行迭代时,它会将其视为字面字符串而不是数组。
使用此函数:
function build_codes_long(codes) {
   var codes_long_text = "";
   for(var i =0;i < codes.length-1;i++) {
      var code = codes[i];
      codes_long_text += "<p>" + code['id'] + " = " + code['del'] + "</p>";
   }
return codes_long_text; 
}

当我传递一个JSON字符串给它,例如:
[{"id":"1","del":"0","clip":"1"},{"id":"2","del":"0","clip":"1"}]

它评估字符串中的每个字符,而不是数组中的每个项。因此,它循环了65次,而不是2次,返回类似以下内容:
undefined = undefined

我理解返回值的问题;我不理解的是将数组视为字面字符串。谢谢!

1个回答

11

这是因为你没有遍历一个对象,而是遍历了一个字符串并将每个字母作为结果。

你需要先将JSON字符串转换为对象:

var myObject = JSON.parse(myJsonString);
var codesLongText = build_codes_long(myObject);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接