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

Javascript 如何获取JSON对象中的键值?,javascript,json,Javascript,Json,如何使用JavaScript获取JSON对象中的键值和对象的长度 例如: [ { "amount": " 12185", "job": "GAPA", "month": "JANUARY", "year": "2010" }, { "amount": "14

如何使用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"
  }
]
这里,这个数组的长度是3。对于获取,值很好
([0].amount)
,在索引
[0]
中,它有三个名称-值对

所以,我需要得到名称(比如数量或工作…总共四个名称),以及如何计算有多少个名称?

当你需要时,它将成为对象的JavaScript


因此,您可以使用JavaScript数组的属性来查看包含多少元素,并使用循环来枚举它。

首先,您不是在处理“JSON对象”,而是在处理JavaScript对象。JSON是一种文本表示法,但如果您的示例代码有效(
[0].amount
),您已经将该表示法反序列化为JavaScript对象图。(您引用的根本不是有效的JSON;在中,键必须是双引号。您引用的是JavaScript对象文本,它是JSON的超集。)

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

不,现在是3点

所以,我需要得到名字(比如金额或工作……总共四个名字),还要数一数有多少个名字

如果您使用的环境完全支持ECMAScript 5,则可以使用
Object.keys
(|)将其中一个对象的可枚举键作为数组获取。如果不是(或者如果您只是想循环使用它们,而不是获取它们的数组),则可以在中为..使用

var entry;
var name;
entry = array[0];
for (name in entry) {
    // here, `name` will be "amount", "job", "month", then "year" (in no defined order)
}
完整工作示例:

(函数(){
变量数组=[
{
金额:12185,
职务:“GAPA”,
月份:“一月”,
年份:“2010年”
},
{
金额:147421,
职务:“GAPA”,
月份:“五月”,
年份:“2010年”
},
{
金额:2347,
职务:“GAPA”,
月份:“八月”,
年份:“2010年”
}
];
风险价值分录;
变量名;
var计数;
条目=数组[0];
显示(“输入0的键:”;
计数=0;
for(条目中的名称){
显示器(名称);
++计数;
}
显示(“可枚举键总数:”+计数);
//==基本实用功能
功能显示(msg){
var p=document.createElement('p');
p、 innerHTML=msg;
文件.正文.附件(p);
}

})();JSON内容在JavaScript中基本上表示为关联数组。您只需在其上循环即可读取键或值:

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

    // Read key
    for (var key in JSON_Obj) {
       console.log(key);
       console.log(JSON_Obj[key]);
   }
您可能需要:

Object.keys(JSON[0]);
要获得类似于:

[ 'amount', 'job', 'month', 'year' ]


注意:您的JSON无效。

您可以简单地遍历对象并在找到匹配项时返回

代码如下:

returnKeyforValue : function() {
    var JsonObj= { "one":1, "two":2, "three":3, "four":4, "five":5 };
        for (key in JsonObj) {
        if(JsonObj[key] === "Keyvalue") {
            return key;
        }
    }
}
试试这个

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)

这不是有效的JSON,因为没有引用密钥。请查看此问题,谢谢您的回答。请使用
jQuery
getJSON
方法。还建议检查属性是否来自原型。在for循环中,use if(entry.hasOwnProperty(name)){…do stuff…}@Darren:是的,我刚刚添加了一个注释,尽管在这种情况下,它完全没有必要,除非有人在处理
Object.prototype
,而他们真的不应该这样。如何找到“JsonObj”的长度?如果我想在For循环中获得价值呢?*哦,这很容易。如前所述,它是一个关联数组,即字典。当您想从字典中获取值var value=JsonObj[key]时,您将执行与此相同的操作。我正在获取
TypeError:Object.keys不是一个函数