2014-01-05 28 views
0

我通過一本字典語法錯誤在解析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}}]} 

返回這在我的views.py在檢索在JavaScript中有關JSON,JSON數據獲取與封閉(和)如下JSON數據:

({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}}]}) 

由於追加 「」 和 「」 我不能解析在JavaScript的JSON DTA。我如何消除這個語法錯誤。

我Views.py

def get_details(request): 
    import pdb;pdb.set_trace(); 
    total_details = total_accident.objects.filter(State_UT='Tamil Nadu') 
    total_details = serializers.serialize('python', total_details) 
    killed_details = Killed_Count.objects.filter(State_UT='Tamil Nadu') 
    killed_details = serializers.serialize('python', killed_details) 
    injured_details = Injured_Count.objects.filter(State_UT='Tamil Nadu') 
    injured_details = serializers.serialize('python', injured_details) 
    page_data = { 
    "total_json" : total_details, 
    "killed_json" : killed_details, 
    "injured_json" : injured_details, 
    } 
    page_data= simplejson.dumps(page_data) 
    print page_data 
    return render_to_response('dvslzer.html', {'page_data':page_data}) 

我的腳本:

function test() { 

    var dataRows = {{page_data}}; 
    console.log(dataRows.toSource()); 
    var data=JSON.parse(dataRows.total_accident); // throws syntax error 
    console.log(data[0].pk); 
}; 

有什麼解決辦法擺脫這種語法錯誤?

+1

不要加括號。 (爲什麼他們擺在首位加?) – nnnnnn

+0

@nnnnnn:如果我刪除「{{」和「}」,那麼它拋出引用錯誤 – Chuvi

+1

括號內爲圓括號'()',你說沿着得到補充出於某種原因的方式。在任何情況下,您在問題開始時顯示的JSON都沒有名爲'total_accident'的屬性,因此不會'dataRows.total_accident'未定義?這又意味着'JSON.parse(dataRows.total_accident)'_應該會給你一個錯誤... – nnnnnn

回答

2

拼湊我們設法在評論建立上面,這行:

var data=JSON.parse(dataRows.total_accident); 

...其實應該是:

var data = dataRows.total_json; 

因爲首先沒有在沒有財產名爲total_accident的對象,其次,嘗試使用JSON.parse()是沒有意義的,因爲在那時您實際上並未處理JSON。因爲服務器端{{page_data}}直接將JSON輸出到頁面源代碼中,所以在瀏覽器看到它的時候它只是作爲一個對象字面值出現在你的JS中代碼。如果是JSON你需要在dataRows使用JSON.parse()之前,您可以先點符號訪問屬性。)

0

您可以先處理數據,然後將其解析爲JSON。

var data; 

// removes first and last characters from data 
data = data.substring(1, data.length - 1); 

// convert data to JSON 
data = JSON.parse(data);