2012-07-29 79 views
1

我是python和django的新手。Django對象數組解析Django

對於我在我的Django視圖中的應用程序,我接受JSON對象的數組(和子數組)作爲請求,通過使用json.loads我試圖解析和迭代通過JSON對象,但解析時遇到問題。從客戶端發送

我的JavaScript對象是

var JSONObject = { 
     "employees_companyA": 
     [ 
      { "firstName":"John" , "lastName":"Doe" }, 
      { "firstName":"Anna" , "lastName":"Smith" }, 
      { "firstName":"Peter" , "lastName":"Jones" } 
     ], 

     "employees_companyB": 
     [ 
      { "firstName":"John" , "lastName":"Doe" }, 
      { "firstName":"Anna" , "lastName":"Smith" }, 
      { "firstName":"Peter" , "lastName":"Jones" } 
     ] 
    }; 

什麼是解析上述兩個對象,並宣讀名字,姓氏爲相同的最佳途徑。

我嘗試使用的問題o [「名字」],o.firstName等(下面是我的代碼片段)

json_obj = json.loads(request.POST['json_test']) 
    for o in json_obj: 
     temp_arr.append(o["firstName"]) 

我相信這將是非常簡單的,但我不能在這裏找到確切的幫助。

+0

你看到一個例外嗎? – SingleNegationElimination 2012-07-29 19:53:40

回答

2

JSON結構的頂層元素不是一個列表,而是一個映射。它的鍵形式"employees_companyA""employees_companyB"的等

您需要使用python mapping interface代替,從而解決結構:

for value in json_obj.itervalues(): 
    temp_arr.append(value[0]["firstName"]) 

或作爲一個班輪:

temp_arr = [value[0]['firstName'] for value in json_obj.itervalues()] 

兩個使用json_obj上的.itervalues() method來遍歷結構中的所有值。

+0

謝謝,它的工作原理是,我在json_obj.itervalues()中爲o提供了以下建議: temp_arr.append(o [0] ['firstName']) – Rushik 2012-07-29 20:03:20

+0

@Rushik:你說得很對;答案已更新。 – 2012-07-29 20:06:38