Javascript 从本地嵌套的JSON对象检索数据
我制作了一个小测试页面,看起来像这样:Javascript 从本地嵌套的JSON对象检索数据,javascript,json,Javascript,Json,我制作了一个小测试页面,看起来像这样: <!DOCTYPE html> <html lang="en" class="no-js"> <head> <title>Get JSON Value</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> </
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<title>Get JSON Value</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<script>
var json = $.getJSON("../js/report.json", function(data)
{
var items = [];
$.each(data, function (key, value)
{
items.push(key + " " + value);
});
alert(items[3]);
});
</script>
</body>
</html>
警报(项目[2])代码>为我提供stats[对象]
警报(项目[3])代码>给我套件[对象]
我是否可以检索套件
、测试
和通过次数
?
因此,警报的输出将是套件7
,测试13
和通过11
编辑:
理想情况下,我希望将这些值存储在它们自己的变量中,而不仅仅是alert
或console.log
为david编辑
编辑3:
我试过:
console.log(项[2].suites)代码>=>未定义
您没有将统计数据推送到项目数组。这就是为什么你不能得到它的数据。
尽量做得简单些
var json = $.getJSON("../js/report.json", function(data) {
var stats = data.stats;
$.each(stats, function(key, val){
alert(key + " " + val)
});
});
这里有一种方法可以检索套件的数量
,测试
,通过次数
正在检索套件的数量
=>项目[3]。stats.suites
正在检索测试的数量
=>项[3]。统计数据。测试
正在检索通过次数
=>项目[3]。统计数据。通过次数
将括号内的3
替换为所需的索引号
编辑
你可以忘记我上面的答案。这才是真正的答案。我对你的代码做了一些修改,以得到你想要的答案
var items=[];
function recursive(data){
$.each(data, function (key, value)
{
if (value instanceof Object) {
recursive(value);
} else {
items.push(key + " " + value);
}
});
}
var json = $.getJSON("report.json", function(data)
{
recursive(data);
console.log(items[2]); // return 'suites 7'
console.log(items[3]); // return 'tests 13'
console.log(items[4]); // return 'passes 11'
});
由于对象中有一个对象,因此我必须使用递归来跟踪所有数据。不要使用警报,请尝试像这样使用console.log
(项[3])
。之后,检查元素以查看结果。@david它只会给出完全相同的结果。您可以单击结果上的向下箭头以查看更深入的答案。请参阅我的编辑“您继续使用该词。我认为它的意思与您认为的不同。”。您好,谢谢您的回答。我刚刚尝试了console.log(items[3].suites)
结果返回为未定义
。有什么想法吗?console.log(items[2].suites)也是如此代码>编辑,我想现在我的答案会对你有所帮助
var items=[];
function recursive(data){
$.each(data, function (key, value)
{
if (value instanceof Object) {
recursive(value);
} else {
items.push(key + " " + value);
}
});
}
var json = $.getJSON("report.json", function(data)
{
recursive(data);
console.log(items[2]); // return 'suites 7'
console.log(items[3]); // return 'tests 13'
console.log(items[4]); // return 'passes 11'
});