我在本地文件中有以下json:
{
"fields": {
"input": {
"name": "txtCpf",
"id": "txtCpf",
"value": "",
"type": "text",
"Mask": "000.000.000-00",
"class": "input"
},
"input": {
"name": "txtTelephone",
"id": "txtTelefone",
"value": "",
"type": "text",
"Mask": "(00) 00000-0000",
"class": "input"
},
"button": {
"name": "btnSave",
"id": "btnSave",
"value": "",
"class": "input"
}
}
}
这是我的javascript代码:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.fields.input.name;
Object.keys(myObj).forEach(function (item) {
console.log(myObj.fields.input);
});
/* myObj.foreach(function(input){
var fields = input.fields;
alert(fields);
}); */
}
};
xmlhttp.open("GET", "mock.json", true);
xmlhttp.send();
此myObj.fields.input.name
仅返回input
对象的最后一个位置,因此显示 txtTelephone
想要返回输入的所有对象,而不仅仅是最后一个元素
仅使用javascript ..
答案 0 :(得分:3)
将json改为:
{
"fields": {
"input": [{
"name": "txtCpf",
"id": "txtCpf",
"value": "",
"type": "text",
"Mask": "000.000.000-00",
"class": "input"
},
{
"name": "txtTelephone",
"id": "txtTelefone",
"value": "",
"type": "text",
"Mask": "(00) 00000-0000",
"class": "input"
}
],
"button": {
"name": "btnSave",
"id": "btnSave",
"value": "",
"class": "input"
}
}
}
检索所有输入名称,将脚本更改为:
myObj.fields.input.forEach(function (item) {
console.log(item.name);
})
答案 1 :(得分:0)
你的json不对, 你不能与json对象2键相同(输入) 如果有2个相同的键;第一个被最后一个覆盖。
例如将其转换为数组或更改您的密钥名称。