Javascript 如何获取JSON对象中的键值?
如何使用JavaScript获取JSON对象中的键值和对象的长度 例如:Javascript 如何获取JSON对象中的键值?,javascript,json,Javascript,Json,如何使用JavaScript获取JSON对象中的键值和对象的长度 例如: [ { "amount": " 12185", "job": "GAPA", "month": "JANUARY", "year": "2010" }, { "amount": "14
[
{
"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不是一个函数