如何从JSON文件中仅获取名称。此外,代码完全适用于从" file.json"获取数据。即,这不是问题肯定。
JavaScript的:
NullPointerException

" file.json" - JSON:
var data = [];
function getName() {
//what should I write here to get only name from the first object i.e. John
//with this: data[0].name I am getting error!
}
var xhttp;
if(window.XMLHttpRequest)
xhttp = new XMLHttpRequest();
else
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
xhttp.onreadystatechange = function() {
if(xhttp.readyState == 4) {
data = JSON.parse(xhttp.responseText);
getName();
}
}
xhttp.open("GET","file.json",true);
xhttp.send();

答案 0 :(得分:6)
通过函数
传递变量数据var data = [];
function getName(data) {
return data[0].name;
}
var xhttp;
if(window.XMLHttpRequest)
xhttp = new XMLHttpRequest();
else
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
xhttp.onreadystatechange = function() {
if(xhttp.readyState == 4) {
data = JSON.parse(xhttp.responseText);
getName(data);
}
}
xhttp.open("GET","file.json",true);
xhttp.send();
此外,如果要检索所有名称,可以执行以下操作:
function getName(data) {
var names = [];
for (var i = 0; i < data.length; i++) {
names.push(data[i].name);
}
return names;
}
(数据是数组数据)
答案 1 :(得分:4)
使用Array.prototype.map()转换数组中的项目:
data.map(function(item) {
return item.name
});
答案 2 :(得分:1)
您的getName
功能应如下所示:
function getName(){
a.forEach(function(i,j){
console.log(i.name);
});
}
答案 3 :(得分:0)
值得一提的是,JSON
数据类型直接映射到标准的javascript数据类型。这意味着没有JSON数组这样的东西,一旦你JSON.parse()
一个字符串,那么你得到简单的javascript原语:数组,对象,字符串,数字等。
因此从JSON数组中获取元素只是访问标准javascript数组的元素。这通常通过方括号运算符var element = array[index]
来实现。
然而,您的代码在几个与数组元素访问无关的部分中被破坏。
首先,您在顶层定义data
变量 - 您根本不需要它(至少根据样本)。
然后,用空数组初始化它 - 我不知道为什么。
当用单词表示时,onreadystatechange
回调很简单:你得到一个字符串,将其解析为json,然后调用getName
提供结果。这意味着您的getName()
应该需要data
参数,然后您可以在函数中访问该参数。