我对python以及从Java过渡来说还很陌生,所以我将使用Java术语,因为我需要知道它的等效python版本。
所以我有一个如下所述的Django模型:
class Order(models.Model) :
order_id = models.TextField(null=False, blank=False)
is_completed = models.BooleanField(null=False, blank=False, default=False)
我还有一个 kafka经纪人来处理这些订单。要将它们推送到kafka队列中,我将其转换为JSON对象,如下所示:
from django.core import serializers
serialized_obj = serializers.serialize('json', [order])
print("Pushing to kafka topic ", "some_topic")
print(serialized_obj)
send_message("some_topic", serialized_obj)
现在,我需要将此JSON对象转换回Django模型对象,在 Java 中,我们有一个名为Jackson的东西,对我来说可以这样做,但我不是确定如何在Python3中执行此操作。
我尝试了以下代码片段,它返回了一个<generator object Deserializer at 0x7fe000323bf8>
类型的对象
# consumer.py
try:
print(json.loads(msg.value()))
print("---------------------------------")
obj = serializers.deserialize("json", msg.value())
print(obj)
except Exception as e:
import traceback
print(traceback.format_exc())
如何在Python3中实现这一目标?
答案 0 :(得分:2)
首先要序列化对象,请执行以下操作:
from django.core import serializers
d = serializers.serialize('json', Order.objects.all()) # serialize all the objects in Order model
从对象反序列化
for obj in serializers.deserialize('json', d):
print(obj.object) ## return the django model class object
serializers.deserialize()
给出了反序列化的对象
要获取更多详细信息,请参考Django object deserialization