2

我是 python 和 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" }
        ]
     };

解析以上两个对象并读取 firstName,lastName 的最佳方法是什么。

我尝试使用 o["firstName"], o.firstName 等(下面是我的代码片段)

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

我相信这会非常简单,但我在这里找不到确切的帮助。

4

1 回答 1

2

JSON 结构的顶级元素不是列表,而是映射。它的键是"employees_companyA","employees_companyB"等形式。

因此,您需要使用python 映射接口来解决该结构:

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

或作为单行:

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

两者都使用on.itervalues()方法json_obj循环结构中的所有值。

于 2012-07-29T19:53:38.887 回答