2016-10-17 100 views
0

当我收到这样如何转换嵌套列表反对

[ 
    { 
     "id":1, 
     "name":"New Island", 
     "residents":[ 
      { 
       "name":"Paul", 
       "age":"25" 
      } 
     ] 
    }, 
    { 
     "id":2, 
     "name":"One Nation", 
     "residents":[ 
      { 
       "name":"James", 
       "age":"23" 
      }, 
      { 
       "name":"Jessica", 
       "age":"26" 
      } 
     ] 
    } 
] 

DRF解串器JSON数据,使得它列出包含OrderedDict

但我想它使类对象的名单。

这里是我的Django模型

class Country(models.Model): 
    name = models.CharField(max_length=20) 

class Resident(models.Model): 
    name = models.CharField(max_length=20) 
    country = models.ForeignKey('Country', related_name='residents') 
+1

您将不得不解析您的JSON数据并将该信息传递给类构造函数。 – MooingRawr

+0

在rest框架中检查序列化程序,'居民'似乎是另一种模型,所以检查序列化程序中的'depth'会有帮助。 – Rohan

+0

我已经反序列化了它。它使得列表像 0 = OrderedDict([('name','New Island'),('residents',[OrderedDict([('name','Paul'),('age',25)])] )]) 1 = OrderedDict([('name','One Nation'),('residents',[OrderedDict([('name','James'),('age',23)]),OrderedDict ([('name':'Jessica'),('age',26)])])]) – skriex

回答

1

从Python的JSON library

import json 

data = '[{"id":1,"name":"New Island","residents":[{"name":"Paul","age":"25"}]},{"id":2,"name":"One Nation","residents":[{"name":"James","age":"23"},{"name":"Jessica","age":"26"}]}]' 

x = json.loads(data) 

for each_set in x: 
    for every_person in each_set["residents"]: 
     print(every_person["name"]) #getting resident's name 
     print(every_person["age"]) #getting age 
     print(each_set["name"]) #getting the country name 

从那里,它是那么容易,因为传递类的适当参数如