如何从像JSON对象这样的“名字”的键中获取值?

时间:2019-01-25 02:24:53

标签: javascript jquery arrays json object

我有这样的JSON对象,我想获取键“名字”和“姓氏”的值

data={ 
{ 
"objects":[ 
{ 
"ID":"1",
"Country":"Sudan",
"First-Name":"Noemi",
"Last-Name":"Harris"
},
{ 
"ID":"2",
"Country":"Honduras",
"First-Name":"Carol",
"Last-Name":"Mould"
},
{ 
"ID":"3",
"Country":"Togo",
"First-Name":"Dakota",
"Last-Name":"Tindall"
},
{ 
"ID":"4",
"Country":"Lebanon",
"First-Name":"Penelope",
"Last-Name":"Donovan"
},
{ 
"ID":"5",
"Country":"Bahrain",
"First-Name":"Rufus",
"Last-Name":"Baker"
}
]}

我尝试过这个JQuery,但无法获得价值

$each(data.objects,function(index,value){
console.log(value.First-Name);

}) 请为这个问题帮助我。

4 个答案:

答案 0 :(得分:2)

jQuery仅将.First-Name检测为.First,即它不接受格式为-key的{​​{1}}。因此,您需要做的是name-key

['First-Name']
data={ 
"objects":[ 
{ 
"ID":"1",
"Country":"Sudan",
"Frist-Name":"Noemi",
"Last-Name":"Harris"
},
{ 
"ID":"2",
"Country":"Honduras",
"Frist-Name":"Carol",
"Last-Name":"Mould"
},
{ 
"ID":"3",
"Country":"Togo",
"Frist-Name":"Dakota",
"Last-Name":"Tindall"
},
{ 
"ID":"4",
"Country":"Lebanon",
"Frist-Name":"Penelope",
"Last-Name":"Donovan"
},
{ 
"ID":"5",
"Country":"Bahrain",
"Frist-Name":"Rufus",
"Last-Name":"Baker"
}
]}

   $.each(data.objects,function(index,value){
     console.log("First name: "+value['Frist-Name']);
     console.log("Last name: "+value['Last-Name']);
   });

答案 1 :(得分:1)

您需要使用方括号表示法,如下所示:

const data = {
  "objects": [{
      "ID": "1",
      "Country": "Sudan",
      "First-Name": "Noemi",
      "Last-Name": "Harris"
    },
    {
      "ID": "2",
      "Country": "Honduras",
      "First-Name": "Carol",
      "Last-Name": "Mould"
    },
    {
      "ID": "3",
      "Country": "Togo",
      "First-Name": "Dakota",
      "Last-Name": "Tindall"
    },
    {
      "ID": "4",
      "Country": "Lebanon",
      "First-Name": "Penelope",
      "Last-Name": "Donovan"
    },
    {
      "ID": "5",
      "Country": "Bahrain",
      "First-Name": "Rufus",
      "Last-Name": "Baker"
    }
  ]
}

$.each(data.objects, function(index, value) {
    console.log(value["First-Name"]);
    console.log(value["Last-Name"]);
})
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>

您也可以使用纯JavaScript来做到这一点:

const data = {
  "objects": [{
      "ID": "1",
      "Country": "Sudan",
      "First-Name": "Noemi",
      "Last-Name": "Harris"
    },
    {
      "ID": "2",
      "Country": "Honduras",
      "First-Name": "Carol",
      "Last-Name": "Mould"
    },
    {
      "ID": "3",
      "Country": "Togo",
      "First-Name": "Dakota",
      "Last-Name": "Tindall"
    },
    {
      "ID": "4",
      "Country": "Lebanon",
      "First-Name": "Penelope",
      "Last-Name": "Donovan"
    },
    {
      "ID": "5",
      "Country": "Bahrain",
      "First-Name": "Rufus",
      "Last-Name": "Baker"
    }
  ]
}

data.objects.forEach(function(value) {
    console.log(value["First-Name"]);
    console.log(value["Last-Name"]);
});

答案 2 :(得分:0)

请尝试一下,foreach部分可能不正确。

var j_data = JSON.parse(data)
foreach(var item in j_data.objects)
{
console.log(item.First_Name);
}

答案 3 :(得分:0)

首先,您的对象顶部有一个额外的{。下面是答案。

const data={ 
//{
"objects":[ 
{ 
"ID":"1",
"Country":"Sudan",
"First-Name":"Noemi",
"Last-Name":"Harris"
},
{ 
"ID":"2",
"Country":"Honduras",
"First-Name":"Carol",
"Last-Name":"Mould"
}
]};

for(let char in data.objects){
    console.log(data.objects[char]['First-Name']);
    console.log(data.objects[char]['Last-Name']);
}
相关问题