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 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 循环中的 return 在找到值时实际上并没有退出循环。

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

最佳答案

在您的函数中,您需要分配 get_value 返回的值:

get_value(dataObject[i], keyName);

应该是:

value = get_value(dataObject[i], keyName);

或者,只返回值:

return get_value(dataObject[i], keyName);

关于javascript - 从嵌套的 JSON 文档中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18311452/

相关文章:

javascript - oracle apex 5.0中如何防止提交页面后无法点击?

javascript - 确保数组中的值在推送时是唯一的

java - 无法将对象转换为 JSON

.net - 如何在 ASP.NET MVC 中将 View 模型转换为 JSON 对象?

javascript - 如何在 NodeJS/JavaScript 中将文本格式 JSON 数组转换为 JSON 对象数组?

javascript - 在 AngularJS 上读取 JSON

javascript - 如何拦截弹出窗口中的重定向?

javascript - jQuery UI 可拖动捕捉到容器中

java - 如何更紧凑地使用Gson的TypeToken?

javascript - 替换 HTML 元素