Javascript-使用for循环运行JSON对象 [英] Javascript - Running through JSON object using for loop
本文介绍了Javascript-使用for循环运行JSON对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是JS的新手,正在尝试遍历以下JSON:
I'm new to JS and I'm trying to loop through the following JSON:
myLogger - myLogger - JSON ARRAY - {"dummmysetsJSONArr":[{"entryID":"1","distance":"100","calories":"50"},{"entryID":"2","distance":"200","calories":"100"},{"entryID":"3","distance":"300","calories":"150"},{"entryID":"4","distance":"400","calories":"200"},{"entryID":"5","distance":"500","calories":"250"},{"entryID":"6","distance":"600","calories":"300"}],"success":1}
但是我的控制台行继续打印:
but my console line keep printing:
myLogger-未定义-未定义-未定义
myLogger - undefined - undefined - undefined
我看到了成功的解决方案,例如这些似乎不适用于我.
I've seen successful solutions such as these which seem not be working for me.
我的for循环尝试如下:
My for loop attempts are as below:
for (var key in jsonarry) {
if (jsonarry.hasOwnProperty(key)) {
myLogger(jsonarry[key].entryID + " - " + jsonarry[key].distance + " - " + jsonarry[key].calories);
}
}
/*
for (var key in jsonarry) {
if (jsonarry.hasOwnProperty(key)) {
myLogger(jsonarry[0].entryID + " - " + jsonarry[1].distance + " - " + jsonarry[2].calories);
}
}
*/
这是我的完整JS:
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawVisualization);
function drawVisualization() {
var req = false;
var jsonarry;
try {
// most browsers
req = new XMLHttpRequest();
myLogger("myLogger - XMLHttpRequest() created");
} catch (e){
// IE
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
myLogger("myLogger - req = new ActiveXObject(Msxml2.XMLHTTP);");
} catch (e) {
// try an older version
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
myLogger("myLogger - req = new ActiveXObject(Microsoft.XMLHTTP);");
} catch (e){
}
}
}
if (!req) {
myLogger("req === false");
} else {
myLogger("req === true");
}
// Use onreadystatechange property
req.onreadystatechange = function() {
//myLogger("myLogger - req.onreadystatechange = function(){");
if(req.readyState == 4) {
myLogger("myLogger - req.readyState == 4");
if(req.status === 200) {
myLogger("myLogger - req.status === 200");
jsonarry = req.responseText;
myLogger("myLogger - JSON ARRAY - " + jsonarry);
myLogger(" ------------- ");
var obj = JSON.parse(jsonarry);
myLogger("jsonarry.length == " + jsonarry.length);
for (var key in jsonarry) {
if (jsonarry.hasOwnProperty(key)) {
myLogger(jsonarry[key].entryID + " - " + jsonarry[key].distance + " - " + jsonarry[key].calories);
}
}
/*
for (var key in jsonarry) {
if (jsonarry.hasOwnProperty(key)) {
myLogger(jsonarry[0].entryID + " - " + jsonarry[1].distance + " - " + jsonarry[2].calories);
}
}
*/
} else {
myLogger("myLogger - req.status == " + req.status);
}
//return req.status === 200 ? success(req.responseText) : error(req.status)
} else {
myLogger("myLogger - req.readyState != 4 i.e. req.readyState === " + req.readyState);
}
}
req.open("GET", 'http://www.dummyurl/dbread.php', true);
req.send(null);
}
function myLogger(content) {
if (window.console && window.console.log) {
console.log("myLogger - " + content);
}
}
推荐答案
您正在解析JSON字符串,而不是循环浏览已解析的值,而是循环浏览JSON字符串.
You are parsing the JSON string and instead of looping through the parsed value, you are looping through JSON strring.
var obj = JSON.parse(jsonarry);
myLogger("jsonarry.length == " + jsonarry.length);
for (var key in jsonarry) {
if (jsonarry.hasOwnProperty(key)) {
myLogger(jsonarry[key].entryID + " - " + jsonarry[key].distance + " - " + jsonarry[key].calories);
}
}
使用如下.
var obj = JSON.parse(jsonarry);
myLogger("jsonarry.length == " + jsonarry.length);
for (var key in obj) {
if (jsonarry.hasOwnProperty(key)) {
myLogger(jsonarry[key].entryID + " - " + jsonarry[key].distance + " - " + jsonarry[key].calories);
}
}
但是,为什么要遍历对象?您需要遍历该对象内部的数组吗?
But, why are you looping through object ? You need to loop through array inside that object right ?
这篇关于Javascript-使用for循环运行JSON对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文