返回Json对象不正确

时间:2017-06-14 14:46:36

标签: javascript json

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

2 个答案:

答案 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个相同的键;第一个被最后一个覆盖。

例如将其转换为数组或更改您的密钥名称。