Javascript 返回的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

我在本地文件中有以下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..

您的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修复的项目时仍然存在问题。我想你应该发布一个完整的答案。