如何使用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]
中它有3个名称值对。
所以,我需要得到这个名字(喜欢金额或工作......总共四个名字)还要算出有多少名字?
答案 0 :(得分: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]);
}
答案 1 :(得分: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)
}
完整的工作示例:
(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);
}
})();
由于你正在处理原始对象,上面的for..in
循环很好(除非有人犯了与Object.prototype
混淆的罪,但我们假设没有)。但是,如果您想要键的对象也可以从其原型继承可枚举属性,则可以通过添加{{}将循环限制为仅对象的自己的键(而不是其原型的键)。 1}}在那里打电话:
hasOwnProperty
答案 2 :(得分:11)
您可能需要:
Object.keys(JSON[0]);
获得类似的内容:
[ 'amount', 'job', 'month', 'year' ]
注意:您的JSON无效。
答案 3 :(得分:1)
尝试一下
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)
答案 4 :(得分:0)
当您parse the JSON representation时,它将成为对象的JavaScript array。
因此,您可以使用JavaScript数组的.length
property来查看包含的元素数量,并使用for
循环来枚举它。
答案 5 :(得分:0)
您可以简单地遍历对象,如果找到匹配项,则返回此代码
returnKeyforValue : function(){
var JsonObj= { "one":1, "two":2, "three":3, "four":4, "five":5 };
for (key in JsonObj) {
if(JsonObj[key] === "Keyvalue"){
return key;
}
}
}