No_*_*Fun 5 python django deserialization django-rest-framework
我想反序列化这个json:
json1 = {
"age" : "22",
"name" : "Bob",
"lastname" : "Andrew",
"contactList" : [
{ "friend" : "Alice"},
{ "friend" : "John"}
]}
Run Code Online (Sandbox Code Playgroud)
我创建了以下类(我不想创建任何模型,因为我对将它们保存在数据库中不感兴趣):
class Friend(object):
def __init__(self, friend):
self.friend = friend
class Person(object):
def __init__(self, age , name , lastname, contactList):
self.age=age
self.name = name
self.lastname = lastname
self.contactList= [] #possible error here
Run Code Online (Sandbox Code Playgroud)
以及以下序列化程序:
class FriendSeriliazer(serializers.Serializer):
friend = serializers.CharField()
def create(self, validated_data):
return Friend(**validated_data)
class PersonSerializer(serializers.Serializer):
age = serializers.CharField()
name = serializers.CharField()
lastname = serializers.CharField()
contactList = FriendSerializer(many=True)
def create(self, validated_data):
print validated_data
simple = Person(**validated_data)
contactList = self.validated_data.pop('contactList')
for friend in contactList:
serializer = FriendSerializert(data=friend)
if serializer.is_valid(raise_exception=True):
person.contactList.append(serializer.save())
return person
Run Code Online (Sandbox Code Playgroud)
视图中的 POST 方法:
parsedData = PersonSerializer(data=request.data)
person = parsedData.save()
print person.contactList[0].friend #<-- nested object should be present
return Response(request.data, status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)
我为此使用了 drf文档
问题是,虽然这行得通,但我需要反序列化一个更复杂的 json,并且迭代 create 函数中的内部对象并不会削减它。有没有更自动化的方法?
| 归档时间: |
|
| 查看次数: |
2224 次 |
| 最近记录: |