我有以下JSON对象:
"StudentData": {
"Name": "Mike",
"Age": 25,
"DateOfBirth": 9/25/1993,
"IsMarried": false
}
我正在开发一个Javascript函数,它将向用户显示一个对话框,其中包含上面的信息,但是我希望信息前面有对象的名称(即“StudentData”)。
假设我将此对象存储在我的函数中的变量中,我们称之为myStudent
。
我偶然发现SE上的帖子使用Object.keys(myStudent)[0]
获取key
中第一个StudentData
的属性名称,但我想要提取对象本身的名称。
我该怎么做呢?
谢谢 :)
编辑:
我希望获得StudentData
字符串,而不是StudentData
对象本身包含的任何键。
但我想提取对象本身的名称。
对象本身没有“名称”。在其他答案中存在一些混淆,认为您只是想在对象中获取“Name”属性,而不是试图获取值“StudentData”。你能做到这一点的唯一方法是它是否存储在这样的对象中:
let myObject = {
"StudentData": {
"Age": 25,
"IsMarried": false
}
}
然后你可以使用Object.keys(myObject)[0]
找到的解决方案来获取"StudentData"
,但是如果它没有像那样存储,那么没有标准的方法来获得该值。即使在上面的例子中,包含Age
等的对象也没有“StudentData”的“名称”,它只是与外部对象中的键“StudentData”相关联。
试试这样:
var obj = {
"StudentData": {
"Name": "Mike",
"Age": 25,
"DateOfBirth": 9/25/1993,
"IsMarried": false
}
};
// to get the first key
var keys = Object.keys(obj);
console.log(keys[0]);
// or to get the StudentData keys:
var objectKeys = Object.keys(obj.StudentData);
console.log(objectKeys);
// or to populate dinamically a table
let k, tr = '';
for (k in obj.StudentData) {
tr += '<tr><td>' + k + '</td><td>' + obj.StudentData[k] + '<td></tr>';
}
$('table.popup tbody').append(tr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="popup">
<thead>
<tr>
<td><b>Property</b></td>
<td><b>Value</b></td>
</tr>
</thead>
<tbody></tbody>
</table>
如果您将此对象存储为
var myStudent = { "StudentData": {
"Name": "Mike",
"Age": 25,
"DateOfBirth": 9/25/1993,
"IsMarried": false
}
}
只需简单地用myStudent.StudentData.Name
获得价值'迈克'。
如果你真的想从对象中获取密钥。你可以运行以下代码。
( function getKeyValueFromJSON() {
var myStudent = { "StudentData": {
"Name": "Mike",
"Age": 25,
"DateOfBirth": '9/25/1993',
"IsMarried": false
}
}
for(var val in myStudent.StudentData) {
console.log("Key: " + val + " value: " + myStudent.StudentData[val]);
}
})();