如何获取JSON对象中的键值?

sel*_*rai 20 javascript json

如何使用JavaScript获取JSON对象中的键值和对象的长度.
例如:

[
  {
    "amount": " 12185",
    "job": "GAPA",
    "month": "JANUARY",
    "year": "2010"
  },
  {
    "amount": "147421",
    "job": "GAPA",
    "month": "MAY",
    "year": "2010"
  },
  {
    "amount": "2347",
    "job": "GAPA",
    "month": "AUGUST",
    "year": "2010"
  }
]
Run Code Online (Sandbox Code Playgroud)

这里,这个数组的长度是3.为了获得值很好([0].amount),在索引中[0]它有3个名称值对.
所以,我需要得到这个名字(比如数量或工作......总共有四个名字),还要算出有多少名字?

Ana*_*and 18

Json基本上表示为Javascript中的关联数组.只需要将它们循环到读取键或值即可

    var JsonObj= { "one":1, "two":2, "three":3, "four":4, "five":5 };

    //read key
    for (var key in JsonObj) {
       console.log(key);
       console.log(JsonObj[key]);
   }
Run Code Online (Sandbox Code Playgroud)


T.J*_*der 15

首先,你没有处理"JSON对象".你正在处理一个JavaScript对象.JSON是一种文本符号,但如果您的示例代码工作([0].amount),您已经将该符号反序列化为JavaScript对象图.(你引用的内容根本就不是JSON;在JSON中,键必须是双引号.你引用的是JavaScript对象文字,它是JSON的超集.)

这里,这个数组的长度是2.

不,这是3.

所以,我需要得到这个名字(比如金额或工作......总共四个名字),还要算出有多少名字?

如果您使用的是具有完整ECMAScript5支持的环境,则可以使用Object.keys(spec | MDN)将其中一个对象的可枚举键作为数组获取.如果没有(或者如果你只想循环遍历它们而不是获取它们的数组),你可以使用for..in:

var entry;
var name;
entry = array[0];
for (name in entry) {
    // here, `name` will be "amount", "job", "month", then "year" (in no defined order)
}
Run Code Online (Sandbox Code Playgroud)

完整的工作示例:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
Run Code Online (Sandbox Code Playgroud)

既然你正在处理原始对象,那么上面的for..in循环就可以了(除非有人犯下了与之相关的罪行Object.prototype,但我们假设没有).但是,如果您想要键的对象也可以从其原型继承可枚举属性,则可以通过在其中添加调用将循环限制为仅对象自己的键(而不是其原型的键)hasOwnProperty:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
Run Code Online (Sandbox Code Playgroud)


Jas*_*eem 11

你可能需要:

Object.keys(JSON[0]);
Run Code Online (Sandbox Code Playgroud)

得到类似的东西:

[ 'amount', 'job', 'month', 'year' ]
Run Code Online (Sandbox Code Playgroud)

注意:您的JSON无效.


小智 5

试试这个

var str ="{ "name" : "user"}";
var jsonData = JSON.parse(str);     
console.log(jsonData.name)

//Array Object

str ="[{ "name" : "user"},{ "name" : "user2"}]";
jsonData = JSON.parse(str);     
console.log(jsonData[0].name)
Run Code Online (Sandbox Code Playgroud)