I'm trying to get values from a nested JSON document. I wrote the following function:
var jsondata = {
'name': {
'fname': 'Jack',
'lname': [{'familyName': 'Sparrow'}, {'surname': 'Captain'}]
}
};
var extracted = get_value(jsondata, 'familyName');
console.log(extracted); // null is getting printed
function get_value(dataObject, keyName) {
value = null;
for (var i in dataObject) {
if (i == keyName) {
value = dataObject[keyName];
console.log(value); // getting correct value of 'familyName' here
return value;
} else if (typeof dataObject[i] == 'object') {
get_value(dataObject[i], keyName);
}
}
return value;
}
The problem is, I'm getting the correct value when printing console.log(value);, but null is getting printed by console.log(extracted);. Its like a return inside the for-in loop is not actually exiting the loop when the value is found.
What am I doing wrong? Thanks in advance.