将JSON对象中的JSON数组转换为jquery中的数组

时间:2014-08-05 21:29:13

标签: javascript jquery ajax json

我试图转换以下json:

{
    "questions": [
        {
            "question#1": "How much is 3+1",
            "correct answer": 1,
            "answers": {
                "ans#1": "5",
                "ans#2": "4",
                "ans#3": "3"
            }
        },
 {
            "question#5": "How much is 2+4",
            "correct answer": 0,
            "answers": {
                "ans#1": "6",
                "ans#2": "4",
                "ans#3": "7",
                "ans#4": "5"
            }
        }

    ]
}

在Jquery中使用以下代码:

$(document).ready(function(){
    $.getJSON("data.json", function(json) {
        console.log(json); // this will show the info it in firebug console
       var sarit = Object.keys(json); // "a"

    });

    /*var update = document.getElementById("content");
    update.innerHTML("test");*/

    document.getElementById("content").innerHTML =  JSON.stringify(sarit);
});

我收到错误 - 未捕获的ReferenceError:未定义sarit

我如何得到答案'每个问题的价值,并在html文件中使用它,即内容

2 个答案:

答案 0 :(得分:1)

sarit的范围是getJSON的成功处理程序,它不存在于外部。

另外,请考虑getJSON运行异步,因此在调用此方法后根据响应错误地使用语句。下一行执行时,ajax调用不会完成。

答案 1 :(得分:1)

调用sarit

document.getElementById("content").innerHTML = JSON.stringify(sarit);不存在,并且它不在范围内,因此即使是尝试此操作也无法看到。

$(document).ready(function(){
    $.getJSON("data.json", function(json) {
        console.log(json); // this will show the info it in firebug console
        var sarit = Object.keys(json); // "a"
        document.getElementById("content").innerHTML =  JSON.stringify(sarit);
    });
});

那说他只会在你的html页面中显示["questions"]。为了获得答案值,你必须遍历json以检索如下的值:

$(document).ready(function(){
    $.getJSON("data.json", function(json) {
        var anserFor1st = json.questions[0].answers;
        var anserFor2nd = json.questions[1].answers;//If it's more than two use a loop
        document.getElementById("content").innerHTML =  JSON.stringify(anserFor1st) + "<br/>" + JSON.stringify(anserFor2nd);
    });
});