开发者问题收集

使用 javascript 从 JSON 获取值

2017-09-27
81

我需要使用 javaScript 从 JSONString 获取值。我做了以下操作:

jsonData = JSON.stringify(data);
var jsonVar = "jVar";


for (var l = 0; l < jsonData.jsonVar.length; l++) {
                    var item = jsonData.itemI+"-"+itemJ+"-"+itemK.split(' ').join('')[i];
                    alert(cuecard);
                }

这是 JSONData:

{"jVar":["123","234"]}

但是我得到了以下异常:

Uncaught TypeError: Cannot read property 'length' of undefined
at Object.success (test.jsp:62)
at i (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at A (jquery.min.js:4)
at XMLHttpRequest.<anonymous> (jquery.min.js:4)

我在 这里 看到了这个例子,但我不知道我犯了什么错误。有人可以提出建议吗?

3个回答

您搞错了 - JSON.stringify 将 javascript 对象转换为字符串。而 JSON.parse 将 JSON 字符串解析为 javascript 对象。

此外,完成此操作后,如果您想使用字符串读取属性,请使用方括号表示法:

var jsonData = JSON.parse(data);
var jsonVar = "jVar";

for (var l = 0; l < jsonData[jsonVar].length; l++) {
  var arrayItem = jsonData[jsonVar][l];
 ...
}

(顺便说一句, l 不是循环控制变量的好选择 - 看起来太像 1

Jamiec
2017-09-27

首先确保您有一个有效的 JSON 对象。我认为您拥有的从一开始就不是有效的。

JSON.parse(yourValidJsonObject);

以上应该为您提供一个可以使用的纯 Javascript 对象。

JSON.stringify(yourPlainJavascriptObject) 会将纯 js 对象转换为 JSON 对象。

pro
2017-09-27

您必须像这样访问该属性。

for (var l = 0; l < jsonData[jVar].length; l++) {

}
Himan
2017-09-27