Javascript 返回的Json对象不正确
我在本地文件中有以下json:Javascript 返回的Json对象不正确,javascript,json,Javascript,Json,我在本地文件中有以下json: { "fields": { "input": { "name": "txtCpf", "id": "txtCpf", "value": "", "type": "text", "Mask": "000.000.000-00", "class": "input" }, "input": { "name": "txtT
{
"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..您的json不正确,
json对象的2个键不能相同(输入)
如果有2个识别键;第一个将被最后一个覆盖
例如,将其转换为数组或更改密钥名。您的json不正确,
json对象的2个键不能相同(输入)
如果有2个识别键;第一个将被最后一个覆盖
例如,将其转换为数组或更改密钥名。将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);
})
将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);
})
您的json不正确,
输入
必须输入到数组中,以稍微不同的方式重新表述:JS对象中不能有重复的键。或者JSON对象。JSON中不能有重复的键,请尝试JSONLint online toolAs@GeorgeVassilev编写的,因为它包含重复的键。我相信您的数据结构应该是{“fields:[{“name”:“txtTelephone”,ect}]}
实际上,从技术上讲,重复的密钥仍然被视为有效的JSON,尽管这是非常不鼓励的。您的JSON不正确,输入必须放入数组中,以稍微不同的方式重新表述:JS对象中不能有重复的密钥。或者JSON对象中不能有重复的密钥。请尝试JSONLint online toolAs@geovassilev写的,因为它包含一个重复的密钥。我相信您的数据结构应该是{“fields:[{“name”:“txtTelephone”,etc}]}
实际上,从技术上讲,重复的密钥仍然被认为是有效的JSON,虽然非常不鼓励。但这仍然不能回答问题:如何检索所有名称?@FlorianAlbrecht我猜Json已经修复了,当前JavaScript已经可以这样做了。@Fran nope,不是以当前的形式。@FlorianAlbrecht我没有意识到OP在获取Json修复的项目时仍然存在问题。我想你应该发布一个完整的答案。这仍然不能回答问题:如何检索所有的名字?@FlorianAlbrecht我猜Json已经修复了,当前的JavaScript已经可以了。@Fran nope,不是以当前的形式。@FlorianAlbrecht我没有意识到OP在获取Json修复的项目时仍然存在问题。我想你应该发布一个完整的答案。