{"document":
{"people":[
{"name":["Harry Potter"],"age":["18"],"gender":["Male"]},
{"name":["hermione granger"],"age":["18"],"gender":["Female"]},
]}
}
从这个JSON示例中,我想获取每个人的诸如name
,age
,gender
之类的键。如何做到这一点?
{"document":
{"people":[
{"name":["Harry Potter"],"age":["18"],"gender":["Male"]},
{"name":["hermione granger"],"age":["18"],"gender":["Female"]},
]}
}
从这个JSON示例中,我想获取每个人的诸如name
,age
,gender
之类的键。我使用 JavaScript Object 内置的 Object.keys
方法,它会返回给定对象的键的数组。MDN 参考文档
var obj = {name: "Jeeva", age: "22", gender: "Male"}
console.log(Object.keys(obj))
试试这个
var s = {name: "raul", age: "22", gender: "Male"}
var keys = [];
for(var k in s) keys.push(k);
在这里,keys数组将返回您的键["name", "age", "gender"]
var object3 = {
parent1: 42,
parent2: [13, 12, { 'child1': 222 }],
parent3: {
child1: 44,
child2: "ok",
child3: [44, 45, 47, 48]
},
parent4: {
child1: 444
}
};
- Shubhendu Vaidvar input = {"document":
{"people":[
{"name":["Harry Potter"],"age":["18"],"gender":["Male"]},
{"name":["hermione granger"],"age":["18"],"gender":["Female"]},
]}
}
var keys = [];
for(var i = 0;i<input.document.people.length;i++)
{
Object.keys(input.document.people[i]).forEach(function(key){
if(keys.indexOf(key) == -1)
{
keys.push(key);
}
});
}
console.log(keys);
people
是一个空数组,那么可能会出现在非对象上调用Object.keys
的错误。 - vp_arthconst json_getAllKeys = data => (
data.reduce((keys, obj) => (
keys.concat(Object.keys(obj).filter(key => (
keys.indexOf(key) === -1))
)
), [])
)
是的,它可以用非常长的一行来编写;
const json_getAllKeys = data => data.reduce((keys, obj) => keys.concat(Object.keys(obj).filter(key => keys.indexOf(key) === -1)), [])
这个函数应该返回一个数组,其中包含JSON对象中所有的键(即键名),包括嵌套的键/值对。
function get_all_json_keys(json_object, ret_array = []) {
for (json_key in json_object) {
if (typeof(json_object[json_key]) === 'object' && !Array.isArray(json_object[json_key])) {
ret_array.push(json_key);
get_all_json_keys(json_object[json_key], ret_array);
} else if (Array.isArray(json_object[json_key])) {
ret_array.push(json_key);
first_element = json_object[json_key][0];
if (typeof(first_element) === 'object') {
get_all_json_keys(first_element, ret_array);
}
} else {
ret_array.push(json_key);
}
}
return ret_array
}
在原始对象上使用此函数
const op_object =
{
"document":{
"people":[
{
"name":[
"Harry Potter"
],
"age":[
"18"
],
"gender":[
"Male"
]
},
{
"name":[
"hermione granger"
],
"age":[
"18"
],
"gender":[
"Female"
]
}
]
}
}
var all_keys = [];
function get_all_json_keys(json_object, ret_array = []) {
for (json_key in json_object) {
if (typeof(json_object[json_key]) === 'object' && !Array.isArray(json_object[json_key])) {
ret_array.push(json_key);
get_all_json_keys(json_object[json_key], ret_array);
} else if (Array.isArray(json_object[json_key])) {
ret_array.push(json_key);
first_element = json_object[json_key][0];
if (typeof(first_element) === 'object') {
get_all_json_keys(first_element, ret_array);
}
} else {
ret_array.push(json_key);
}
}
return ret_array
}
get_all_json_keys(op_object, all_keys);
console.log(all_keys);
应该产生
[ 'document', 'people', 'name', 'age', 'gender' ]
注意:这将返回所有键名的唯一列表。
var jsonData = { Name: "Ricardo Vasquez", age: "46", Email: "Rickysoft@gmail.com" };
for (x in jsonData) {
console.log(x +" => "+ jsonData[x]);
alert(x +" => "+ jsonData[x]);
}
console.log('{"key0":"value0", "key1":"value1"}');
var jsonObject = JSON.parse('{"key0":"value0", "key1":"value1"}')
Object.keys(jsonObject).forEach(key => {
console.log(jsonObject[key]); //values
console.log(key); //keys
})
{"name": "Harry Potter", "age":"18", "gender":"Male"}
(没有方括号)。 - nbrooks