获取JSON对象名称 - Javascript

时间:2018-03-01 16:40:53

标签: javascript json

我有以下JSON对象:

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

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

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

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

我该怎么做呢?

谢谢:)

修改

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

3 个答案:

答案 0 :(得分:1)

  

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

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

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

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

答案 1 :(得分: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>

答案 2 :(得分:0)

如果您将此对象存储为

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

只需简单myStudent.StudentData.Name即可获得价值&#39; Mike&#39;。

如果你真的想从对象中获取密钥。你可以运行以下代码。

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