使用变量的值检索JSON数据

时间:2018-01-08 11:14:19

标签: javascript json

你好即可。我目前正在开展一个小项目并且遇到以下问题,我似乎无法单独解决这个问题。我试图寻找一个没有运气的解决方案。不可否认,我在JavaScript / jQuery上相当陌生并没有帮助,所以我不确定“正确”的搜索条件!

我有一个包含以下代码的JSON文件:

var draft = {
    "title": "Title",
    "subtitle": "Subtitle",
    "image": "/image.jpeg",
}

然后我用以下行检索JSON数据:

draft["title"];

根据应用程序需要实现的目标 - 有没有办法使用变量的值代替“ draft ”来访问JSON数据?我有一个AJAX函数,它提取JSON文件的文件名和扩展名,然后通过删除斜杠,数字,连字符和文件扩展名将以下代码行将文件名简化为一个单词:

var fileNameRefined = fileName.replace("/", "").replace(/\d+|-/g, "").replace(".json", "");

因此,“ fileNameRefined ”变量将包含值“ draft ”。这按预期输出到控制台。也就是说,它不适用于JSON。我希望以下几行代码能以完全相同的方式工作:

draft["title"];
fileNameRefined["title"]; // var fileNameRefined = draft

不幸的是,结果数据以“未定义”的形式返回。我假设应用程序将变量的名称视为字符串而不是传递变量的值?我不确定。

有人有解决方法吗?任何帮助将不胜感激。

谢谢,全部。

1 个答案:

答案 0 :(得分:1)

可以完成, SHOULDN' T

使用JSON(这是您提供的JS对象)及其API。以下是jQuery的示例,其他libs / frameworks也有类似的示例。

我总是会使用fw或lib来获取清晰的Ajax API,而不是自己在vanilla中编写它。

这里是小提琴中的JSON示例(不是我写的): json get fiddle

function getSuccessOutput() {
    $.ajax({
        url:'/echo/js/?js=hello%20world!',
        complete: function (response) {
            $('#output').html(response.responseText);
        },
        error: function () {
            $('#output').html('Bummer: there was an error!');
        },
    });
    return false;
}

对于JSON api,您将有兴趣使用JSON.parse()

解析响应
var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');