2014-01-05 59 views
0

我生成以下JSON在我的views.py麻烦与解析JSON在Javascript

page_data= {'injured_json': '[{"pk": 24, "model": "appvisual.injured_count", "fields": {"Y_2010": 75445, "Y_2008": 70251, "Y_2009": 70504, "Y_2004": 57283, "Y_2005": 62006, "Y_2006": 64342, "Y_2007": 71099, "State_UT": "Tamil Nadu", "Y_2003": 55242, "Y_2011": 74245}}]'} 

我通过这个JSON来我的JavaScript。我的问题是我如何操纵这个JSON在我的JavaScript。

我试着下面的代码,但它不工作:

function test() { 
    var dataRows = {{page_data}}; 
    console.log(dataRows.injured_json[0].pk); }; 

编辑:我的完整JSON对象的JavaScript

{'injured_json': '[{"pk": 24, "model": "appvisual.injured_count", "fields": {"Y_2010": 75445, "Y_2008": 70251, "Y_2009": 70504, "Y_2004": 57283, "Y_2005": 62006, "Y_2006": 64342, "Y_2007": 71099, "State_UT": "Tamil Nadu", "Y_2003": 55242, "Y_2011": 74245}}]', 'total_json': '[{"pk": 23, "model": "appvisual.total_accident", "fields": {"Y_2010": 64996, "Y_2008": 60409, "Y_2009": 60794, "Y_2004": 52508, "Y_2005": 53866, "Y_2006": 55145, "Y_2007": 59140, "State_UT": "Tamil Nadu", "Y_2003": 51025, "Y_2011": 65873}}]', 'killed_json': '[{"pk": 24, "model": "appvisual.killed_count", "fields": {"Y_2010": 75445, "Y_2008": 70251, "Y_2009": 70504, "Y_2004": 57283, "Y_2005": 62006, "Y_2006": 64342, "Y_2007": 71099, "State_UT": "Tamil Nadu", "Y_2003": 55242, "Y_2011": 74245}}, {"pk": 60, "model": "appvisual.killed_count", "fields": {"Y_2010": 15409, "Y_2008": 12784, "Y_2009": 13746, "Y_2004": 9507, "Y_2005": 9758, "Y_2006": 11009, "Y_2007": 12036, "State_UT": "Tamil Nadu", "Y_2003": 9275, "Y_2011": 15422}}]'} 

注:

我发现,我发送的json数据不是有效的json。我纠正了它。但现在的问题是,我正在发送字典中的json数据。同时在javascrpit中接收json数据时,格式变为json数据。由于额外添加了“”和“”,我无法解析JavaScript中的json。我如何消除“”和“”来解析javascript中的json数据。

回答

2

JSON.parse()

var page_data= {'injured_json': '[{"pk": 24, "model": "appvisual.injured_count"}]'}, 
    dataRows = JSON.parse(page_data.injured_json); 

console.log(dataRows[0].pk); 
+0

感谢您的回答。但console.log引发错误,指出“SyntaxError:JSON.parse:unexpected character” – Chuvi

+0

@Chuvi有了这个脚本吗? –

+0

只有这个脚本 – Chuvi

0

使用JSON

function test() { 
    var data = "{{page_data}}"; 
    var dataRows = JSON.parse(data.injured_json); 
    console.log(dataRows[0].pk); }; 
+0

什么?这失败了。不知道有什么人试图用双括号... –

+0

感谢您的答案。但console.log引发错误,指出“SyntaxError:JSON.parse:意外字符” – Chuvi

+0

@positlabs我想他是从django发送“Json对象”,所以他必须使用双括号来读取javascript中的变量 –

2

我不知道为什么每个人都指着JSON.parse。这里的问题是你试图访问一个数组,但它实际上是一个字符串。只需从阵列周围删除引号。其实...你根本不需要数组。我认为你正在寻找更像这样的东西:

{ 
    "injured_json": { 
     "pk": 24, 
     "model": "appvisual.injured_count", 
     "fields": { 
      "Y_2010": 75445, 
      "Y_2008": 70251, 
      "Y_2009": 70504, 
      "Y_2004": 57283, 
      "Y_2005": 62006, 
      "Y_2006": 64342, 
      "Y_2007": 71099, 
      "State_UT": "Tamil Nadu", 
      "Y_2003": 55242, 
      "Y_2011": 74245 
     } 
    } 
} 

这个问题只是与json格式。

console.log(page_data.injured_json.pk); // logs 24