开发者问题收集

来自 JSON 的 JavaScript 数组

2015-02-16
80

我在名为“response”的变量中有以下 JSON 值

{"rsuccess":true,"errorMessage":" ","ec":null,"responseList":[{"id":2,"description":"user1"},{"id":1,"description”:"user2"}]>

var users=response.responseList; 
var l = users.length;

但是它给了我错误

[错误] TypeError: undefined 不是对象(评估'users.length')

3个回答

从回调获取 response 后,您需要将 JSON 字符串解析为对象...使用

JSON.parse(response);
Rakesh_Kumar
2015-02-16

如果您还没有注意到,此行有一个语法错误

[{"id":2,"description":"user1"},{"id":1,"description”:"user2"}]}

描述标识符周围的双引号没有正确闭合。将其更改为:

{"id":1,"description":"user2"}

然后它就可以正常工作了

AL-zami
2015-02-16

未定义的变量不是对象,因此不能具有长度等属性。


您尚未将 JSON 转换为对象。

按如下方式执行:

var obj = eval("(" + json + ')');

eval() 执行代码并创建本机 JavaScript 对象。

但是,很多人批评 eval() 处理未清理的输入。

最好的选择是使用这个本机 JavaScript 函数: JSON.parse(jsonString); ,它是专门为此目的而创建的 - 解析 JSON 并将其变为对象。


https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

seanlevan
2015-02-16