繁体   English   中英

使用Javascript遍历JSON

[英]Iterate through a JSON with Javascript

我目前在这里同时工作时正在学习代码,因此我是新手。 我正在尝试使用AMcharts制作图表。 我需要根据方向来制作不同的数据集,将来可能还要做更多。 在下面,我显示了当前的JSON和代码。 我遇到的问题是我正在获取数据,但只有最后两个测试结果。 我想知道我需要调整以获取每组数据。 感谢您的任何帮助。

JSON:

"{"TestSets":{"#text":["\n  ","\n  ","\n"],"TestSet":[{"#text":["\n    ","\n    ","\n    ","\n    ","\n    ","\n    ","\n    ","\n    ","\n    ","\n  "],"TestSetID":{"#text":"TestSet_iOS1"},"Hardware":{"#text":"iPad Air 2"},"Version":{"#text":"iOS 8.1.3"},"Build":{"#text":"2.7.0.920"},"Orientation":{"#text":"PORTRAIT"},"NumTestCases":{"#text":"76"},"NumTestScripts":{"#text":"17"},"TotalTime":{"#text":"33823.411"},"TestResults":{"#text":["\n      ","\n      ","\n      ","\n    "],"TestRun":[{"#text":["\n        ","\n        ","\n        ","\n        ","\n        ","\n        ","\n        ","\n      "],"Date":{"#text":"24 Mar 2015"},"Hardware":{"#text":"iPad Air 2"},"Version":{"#text":"iOS 8.1.3"},"Build":{"#text":"2.7.0.907"},"Orientation":{"#text":"PORTRAIT"},"NumPassed":{"#text":"37"},"NumFailed":{"#text":"31"}},{"#text":["\n        ","\n        ","\n        ","\n        ","\n        ","\n        ","\n        ","\n      "],"Date":{"#text":"27 Mar 2015"},"Hardware":{"#text":"iPad Air 2"},"Version":{"#text":"iOS 8.1.3"},"Build":{"#text":"Pro 2.7.0.915"},"Orientation":{"#text":"PORTRAIT"},"NumPassed":{"#text":"100"},"NumFailed":{"#text":"25"}},{"#text":["\n        ","\n        ","\n        ","\n        ","\n        ","\n        ","\n        ","\n      "],"Date":{"#text":"29 Mar 2015"},"Hardware":{"#text":"iPad Air 2"},"Version":{"#text":"iOS 8.1.3"},"Build":{"#text":"2.7.0.920"},"Orientation":{"#text":"PORTRAIT"},"NumPassed":{"#text":"66"},"NumFailed":{"#text":"10"}}]}},{"#text":["\n    ","\n    ","\n    ","\n    ","\n    ","\n    ","\n    ","\n    ","\n    ","\n  "],"TestSetID":{"#text":"TestSet_iOS2"},"Hardware":{"#text":"iPad Air 2"},"Version":{"#text":"iOS 8.1.3"},"Build":{"#text":"Pro 2.7.0.920"},"Orientation":{"#text":"LANDSCAPE"},"NumTestCases":{"#text":"29"},"NumTestScripts":{"#text":"7"},"TotalTime":{"#text":"13666.919"},"TestResults":{"#text":["\n      ","\n      ","\n    "],"TestRun":[{"#text":["\n        ","\n        ","\n        ","\n        ","\n        ","\n        ","\n        ","\n      "],"Date":{"#text":"30 Mar 2015"},"Hardware":{"#text":"iPad Air 2"},"Version":{"#text":"iOS 8.1.3"},"Build":{"#text":"2.7.0.915"},"Orientation":{"#text":"LANDSCAPE"},"NumPassed":{"#text":"34"},"NumFailed":{"#text":"15"}},{"#text":["\n        ","\n        ","\n        ","\n        ","\n        ","\n        ","\n        ","\n      "],"Date":{"#text":"31 Mar 2015"},"Hardware":{"#text":"iPad Air 2"},"Version":{"#text":"iOS 8.1.3"},"Build":{"#text":"Pro 2.7.0.920"},"Orientation":{"#text":"LANDSCAPE"},"NumPassed":{"#text":"10"},"NumFailed":{"#text":"19"}}]}}]}}"

码:

var chartData = [];
for (var i = 0; i < testJson["TestSets"]["TestSet"].length; i++) {
    var testResults = [];
    var runs = testJson["TestSets"]["TestSet"][i]["TestResults"]["TestRun"];
    for (var j = 0; j < runs.length; j++) {
        var run = runs[j];
        testResults.push({"date": run["Date"]["#text"], "NumPassed": run["NumPassed"]["#text"], "NumFailed": run["NumFailed"]["#text"], "Orientation": run["Orientation"]["#text"]});
    }
}
chartData.push(testResults);
console.log(chartData);
var chartData = [];
for (var i = 0; i < testJson["TestSets"]["TestSet"].length; i++) {
var testResults = [];
var runs = testJson["TestSets"]["TestSet"][i]["TestResults"]["TestRun"];
for (var j = 0; j < runs.length; j++) {
var run = runs[j];
testResults.push({"date": run["Date"]["#text"], "NumPassed": run["NumPassed"]["#text"], "NumFailed": run["NumFailed"]["#text"], "Orientation": run["Orientation"]["#text"]});
}
}
chartData.push(testResults);
console.log(chartData);

应该:

var chartData = [];
var testResults = [];
for (var i = 0; i < testJson["TestSets"]["TestSet"].length; i++) {
  var runs = testJson["TestSets"]["TestSet"][i]["TestResults"]["TestRun"];
  for (var j = 0; j < runs.length; j++) {
    var run = runs[j];
    testResults.push({"date": run["Date"]["#text"], "NumPassed": run["NumPassed"]["#text"], "NumFailed": run["NumFailed"]["#text"], "Orientation": run["Orientation"]["#text"]});
  }
}
chartData.push(testResults);
console.log(chartData);

在这里,它也被清理和格式化。

/* global console */
/* global testJson */
(function() {
    'use strict';

    var chartData = [],
        testResults = [],
        runs, run;

    for (var i = 0; i < testJson.TestSets.TestSet.length; i++) {
        runs = testJson.TestSets.TestSet[i].TestResults.TestRun;
        for (var j = 0; j < runs.length; j++) {
            run = runs[j];
            testResults.push({
                'date': run.Date['#text'],
                'NumPassed': run.NumPassed['#text'],
                'NumFailed': run.NumFailed['#text'],
                'Orientation': run.Orientation['#text']
            });
        }
    }
    chartData.push(testResults);
    console.log(chartData);
}());

一些最佳实践建议将变量声明移至函数顶部,因为这是解释器在后台为您执行的操作。 (javascript变量是函数范围的,而不是块级的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM