如何使用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)