2014-01-05 57 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