In order to retrieve a list of ALL the keys (also known as key names) within a JSON object, including keys nested within other key/value pairs, the following function can be utilized:
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
}
When applying this function to the original OP's object shown below
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 = []) {
// Function Code Here
}
get_all_json_keys(op_object, all_keys);
console.log(all_keys);
The expected output will be
[ 'document', 'people', 'name', 'age', 'gender' ]
Please note: This output contains a unique collection of all key names present in the JSON object.