简体   繁体   English

我们如何才能立即将嵌套的json对象反序列化为python模型对象?

[英]How we can deserialize the nested json object into python model object at once?

When we serialize python model object to nested json data we can serialize it in django as foe example. 当我们serialize python model object嵌套的json data我们可以在django中将其序列化为敌人的例子。

DataSerializer(data_list, many=True)

and output will like that. 输出会像那样。

[
    {"name":"user_1", "id":1}, 
    {"name":"user_2", "id":2}, 
    {"name":"user_3", "id":3},
    ... ...
]

Now I want to deserialize the list of json object to python model object at once. 现在,我想立即将json object的列表反序列化为python model object

As for example: 例如:

# the serializer class
class UserSerilizer(serializers.Serializer):
    id = serializers.IntegerField(required=True)
    name = serializers.CharField(required=True)


# Request model class.
class UserRequestModel:
    id = None
    name = None

    def __init__(self, dictionary):
        self.__dict__.update(dictionary)

And what I do. 和我做什么。

# serialize the request data for param validation
user_serializer = UserSerilizer(data=request.data)

# update the user request model with validate data
user_data = UserRequestModel(user_serializer.validated_data)

That's why I can access the value user_data.id and user_data.name for the request body {"name":"user_1", "id":1} 这就是为什么我可以访问请求正文{"name":"user_1", "id":1}的值user_data.iduser_data.name的原因

But how can I do it for list of data at once like we serialize at once with passing parameter DataSerializer(data_list, many=True) . 但是我该如何一次处理数据列表,就像我们通过传递参数DataSerializer(data_list, many=True)一次序列化一样。

Just append deserialize method in your Serializer class 只需在您的Serializer类中附加deserialize Serializer方法

class UserSerializer(serializers.Serializer):
    id = serializers.IntegerField(required=True)
    name = serializers.CharField(required=True)

    @classmethod
    def deserialize(cls, data, many=False):
        if many is False:
            return UserRequestModel(data)
        else:
            obj_list = []
            for d in data:
                obj_list.append(UserRequestModel(d))
            return obj_list

But I can not understand why you want to deserialize. 但是我不明白为什么要反序列化。 I don't think this is recommended in django. 我认为在Django中不建议这样做。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM