2016-09-10 23 views
0

我有此JSON對象中ajax_data可變不能打印JSON對象的值在Django

{ 
    "columns[0][data]": "0", 
    "columns[1][name]": "", 
    "columns[5][searchable]": "true", 
    "columns[5][name]": "", 
    "columns[4][search][regex]": "false", 
    "order[0][dir]": "asc", 
    "length": "10", 
} 

我已經使用json.loads轉換()函數等。

ajax_data = json.loads(ajax_data) 

我想要得到的值,如果 「命令[0] [DIR]」 和 「列[0] [數據]」,但如果我打印使用

ajax_data['order'][0]['dir] 

它給錯誤的:

KeyError at /admin/help 
'order' 

但是相同的代碼工作,如果我訪問它的長度鍵然後它的工作。

+0

你的密鑰是一個字符串「[order] [0] [dir]」 - 它實際上並不是一個數組。我認爲這應該工作:ajax_data [「[order] [0] [dir]」]。但是如果你想使用一個實際的數組,你可能想要另一種方式來存儲/訪問數據。 – mcriecken

回答

1

您使用的鍵實際上不是一種很好的實現方式。

{ 
    "columns[0][data]": "0", 
    "columns[1][name]": "", 
    "columns[5][searchable]": "true", 
    "columns[5][name]": "", 
    "columns[4][search][regex]": "false", 
    "order[0][dir]": "asc", 
    "length": "10", 
} 

取而代之的是,你應該甲肝走了

{ 
    "columns": [ 
     {"data": "0", "name": "", "searchable": "true", "name": "", "search": { 
      "regex": "false"} 
     }, 
     {"data": "0", "name": "", "searchable": "true", "name": ""," search": { 
      "regex": "false"}}, 
     {"data": "0", "name": "", "searchable": "true", "name": "", "search": { 
      "regex": "false"}}, 
     {"data": "0", "name": "", "searchable": "true", "name": "", "search": { 
      "regex": "false"}}, 
     {"data": "0", "name": "", "searchable": "true", "name": "", "search": { 
      "regex": "false"}}, 
     {"data": "0", "name": "", "searchable": "true", "name": "", "search": { 
      "regex": "false"}}, 
    ], 
    "order": [ 
     {"dir": "asc"} 
    ], 
    "length": "10" 
} 

在這種情況下ajax_data [ '秩序'] [0] ['DIR]將導致價值 「ASC」

對於您目前執行的關鍵是 「爲了[0] [DIR]」

即去

ajax_data["order[0][dir]"]

希望你明白這個問題。

構建json在處理API時非常重要。嘗試重構你的json,這對未來也有幫助。

+0

ajax_data [「order [0] [dir]」]這是工作,但我沒有創建這個結構。我正在使用metronic ajax數據表,並且有一個文件datatables.js以這種格式返回表的值。 metronic datatables插件與PHP代碼兼容,但我必須在django中使用它,這就是爲什麼我面臨一些問題。 – Pankaj

+0

好的。那很好。很高興你得到了你的答案。 :) –

0

這是因爲length是該json對象的關鍵,而order則不是。關鍵的名稱是引號內的整個字符串:columns[0][data]order[0][dir]

這些都是不尋常的鍵名,但完全有效的。