来自 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