获取JSON对象名称 - Javascript

问题描述 投票:-2回答:3

我有以下JSON对象:

"StudentData": {
    "Name": "Mike",
    "Age": 25,
    "DateOfBirth": 9/25/1993,
    "IsMarried": false
}

我正在开发一个Javascript函数,它将向用户显示一个对话框,其中包含上面的信息,但是我希望信息前面有对象的名称(即“StudentData”)。

假设我将此对象存储在我的函数中的变量中,我们称之为myStudent

我偶然发现SE上的帖子使用Object.keys(myStudent)[0]获取key中第一个StudentData的属性名称,但我想要提取对象本身的名称。

我该怎么做呢?

谢谢 :)

编辑:

我希望获得StudentData字符串,而不是StudentData对象本身包含的任何键。

javascript json
3个回答
1
投票

但我想提取对象本身的名称。

对象本身没有“名称”。在其他答案中存在一些混淆,认为您只是想在对象中获取“Name”属性,而不是试图获取值“StudentData”。你能做到这一点的唯一方法是它是否存储在这样的对象中:

let myObject = {
    "StudentData": {
        "Age": 25,
        "IsMarried": false
    }
}

然后你可以使用Object.keys(myObject)[0]找到的解决方案来获取"StudentData",但是如果它没有像那样存储,那么没有标准的方法来获得该值。即使在上面的例子中,包含Age等的对象也没有“StudentData”的“名称”,它只是与外部对象中的键“StudentData”相关联。


0
投票

试试这样:

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>

0
投票

如果您将此对象存储为

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]);
    }
 })();
© www.soinside.com 2019 - 2024. All rights reserved.