Javascript 从嵌套JSON文档获取值

Javascript 从嵌套JSON文档获取值,javascript,json,Javascript,Json,我试图从嵌套的JSON文档中获取值。我编写了以下函数: var jsondata = { 'name': { 'fname': 'Jack', 'lname': [{'familyName': 'Sparrow'}, {'surname': 'Captain'}] } }; var extracted = get_value(jsondata, 'familyName'); console.log(extracted); // null is getting print

我试图从嵌套的JSON文档中获取值。我编写了以下函数:

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;
}
问题是,我在打印
console.log(value)时得到了正确的值
,但
null
console.log(提取)打印。它就像for-in循环中的一个返回,在找到值时实际上并没有退出循环


我做错了什么?提前感谢。

在函数中,您需要分配由
get\u value
返回的值:

get_value(dataObject[i], keyName);
应该是:

value = get_value(dataObject[i], keyName);
或者,只需返回以下值:

return get_value(dataObject[i], keyName);

删除
value=null来自函数。

最后我重写了代码,现在它将返回json数据中任何给定键的值:-

function get_value_nested(dataObject, keyName) {
    var value = null;
    this.get_value = function (dataObject, keyName) {
        for (i in dataObject) {
            if (i == keyName) {
                value = dataObject[keyName];
            } else if (typeof dataObject[i] == 'object') {
                 this.get_value(dataObject[i], keyName);
            }
        }
        return value;
    }

    this.get_value(dataObject, keyName);

    return value;
}

我想应该是name.lname.familyname试试看@SparkyThank@Kira,这种访问方式会有效,但我尝试了更多的动态方法。啊,这对最初的问题有效。但是当我尝试
get_value(jsondata,'姓氏')时失败了而不是
get_值(jsondata,'familyName')然后它将给出
未定义的
:)