2017-06-14 81 views
0

我有一个本地文件中的以下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

想要返回的所有对象的输入,而不仅仅是最后的el EMENT

使用JavaScript只..

+4

你的JSON不正确,'inputs'必须到数组 –

+1

改变措辞略有不同:你在JS对象中不能有重复的键。或者一个JSON对象。 –

+2

您无法在JSON中使用重复密钥,请尝试使用JSONLint在线工具 – dloeda

回答

0

您的JSON是不正确的, 你不能用JSON对象有2个按键相同(输入) 如果有2个identicals键;第一个被最后一个覆盖。

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

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); 
}) 
+0

这仍然没有回答这个问题:如何**取回所有的名字? –

+0

@FlorianAlbrecht我猜Json是固定的,目前的JavaScript已经可以做到这一点。 – Nope

+0

@Fran nope,不是现在的形式。 –