将json格式变量转换为javascript数组

时间:2013-02-08 14:15:01

标签: javascript django arrays json string

我正在使用Django框架来构建一个网站。

在Python文件(views.py)中,我向Javascript函数发送一个已转换为json数据的数组

的Python:

json_data=[1,2,3]
return HttpResponse(json.dumps(json_data), mimetype='application/json')

然后,在Javascript中,我在html中显示json数据。

JavaScript的:

function get_variable(){ 

  $.get("/xhr_test/json/", function(json_data) {
    $('.square').append('<p> ' + json_data  + ' </p>');});
};

到目前为止一切正常。但是,我想将“json_data”(我认为是一个字符串)转换为数组。

我试过这样做:

function get_variable(){ 

  $.get("/xhr_test/json/", function(json_data) {
    var array = json_data.split(',');
    $('.square').append('<p> ' + array[0]+ ' </p>');});
};

不幸的是,这不起作用。

有人可以向我解释如何将“json_data”变量转换为JavaScript中的数组?

非常感谢。

4 个答案:

答案 0 :(得分:1)

“这不起作用”它太模糊了...... 无论如何,如果我理解你的问题,你正在处理一个字符串,而不是一个JavaScript数组...你必须评估从ajax调用返回的数据:

var theJavaScriptArray = eval('(' + json_data + ')');

或更好......使用 jQuery.ajax 并将json指定为dataType:jquery doc

答案 1 :(得分:1)

当您以JSON格式发送数据时,它是一个字符串(主数据),但是以这样的方式格式化的字符串可以很容易地恢复原始类型(即您的数组)的数据。 Javascript和jquery有不同的方法来做到这一点。使用jQuery,getJSON可能是最直接的:

http://api.jquery.com/jQuery.getJSON/

您可以使用浏览器的javascript控制台来查看JS变量的确切含义。

答案 2 :(得分:1)

最后,感谢Zah,我发现了“javascript控制台”,我不知道它存在。

我可以看到错误是“json_data”变量不是字符串。

所以这是对我有用的解决方案:

function get_variable(){ 
  $.get("/xhr_test/json/", function(json_data) {
    var b=json_data.toString().split(',');
    $('.square').append('<p> ' + b[0]  + ' </p>');
  });
};

答案 3 :(得分:0)

jQuery中有一个简写来自动解析json字符串:jQuery.getJSON()

$.getJSON('/xhr_test/json/', function(data) {
     console.log(data);  // Here data is already a JavaScript object
});

这基本上与:

相同
$.ajax({
    url: "/xhr_test/json/",
    dataType: "json",
    success: function(data) {
        console.log(data);  // Here data is already a JavaScript object
    }
});

与...大致相同:

$.ajax({
    url: "/xhr_test/json/",
    success: function(data) {
        var json = $.parseJSON(data);  // Here data is a string
        console.log(data);  // And json is JavaScript object
    }
});