简体   繁体   English

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

[英]How to get Value From Key Like this “First-Name” from JSON Object?

I have JSON Object like this and I want to get the value of Key "First-Name" and "Last-Name" 我有这样的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"
}
]}

I have tried this JQuery but couldn't get value 我已经尝试过这个JQuery,但无法获得价值

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

}) Please help me for this problem. })请帮我解决这个问题。

jQuery detects .First-Name as .First only ie it doesn't accept -key of the form name-key . jQuery仅将.First-Name检测为.First即它不接受name-key形式的-key So what you have to do is ['First-Name'] 所以您要做的是['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']); }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

You need to use square bracket notation like so: 您需要使用方括号表示法,如下所示:

 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> 

You can also do this with pure JavaScript: 您也可以使用纯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"]); }); 

please try this, foreach part maybe not correct. 请尝试此操作,foreach部分可能不正确。

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

For a start, your object had an extra { at the top. 首先,您的对象在顶部有一个额外的{。 below is the answer. 下面是答案。

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']);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM