khe*_*lll 19 python django json
我试图想出一种方法将一些Django模型对象序列化为JSON格式,如:
j = Job.objects.get(pk=1)
##############################################
#a way to get the JSON for that j variable???
##############################################
Run Code Online (Sandbox Code Playgroud)
我不想要:
from django.core import serializers
serializers.serialize('json', Job.objects.get(pk=1),ensure_ascii=False)
Run Code Online (Sandbox Code Playgroud)
因为它返回JSON数组,而不是单个对象表示.
有任何想法吗?
我正在考虑的一种方法是:找到一种方法来获取对象的哈希(属性,值),然后使用simplejson来获取它的JSON表示,但是我不知道如何获得该哈希.
ist*_*ble 30
怎么样只是按摩你从serializers.serialize回来的东西?从结果的正面和背面修剪方括号并不难.
job = Job.objects.get(pk=1)
array_result = serializers.serialize('json', [job], ensure_ascii=False)
just_object_result = array_result[1:-1]
Run Code Online (Sandbox Code Playgroud)
不是一个奇特的答案,但它会给你一个json表示法中的对象.
JPG*_*JPG 17
使用带python格式的Django Serializer
from django.core import serializers
j = Job.objects.get(pk=1)
response = serializers.serialize('python', [j], ensure_ascii=False)Run Code Online (Sandbox Code Playgroud)
json在序列化和加载字符串响应时使用格式
import json
from django.core import serializers
j = Job.objects.get(pk=1)
json_str_response = serializers.serialize('json', [j], ensure_ascii=False)
response = json.loads(json_str_response)[0]Run Code Online (Sandbox Code Playgroud)
使用Django REST Framework 的 Serializer 类 定义一个序列化器类并将实例序列化为
from rest_framework import serializers
class JobSerializer(serializers.ModelSerializer):
class Meta:
model = Job
fields = '__all__'
j = Job.objects.get(pk=1)
response = JobSerializer(instance=j).data
Run Code Online (Sandbox Code Playgroud)
参考
1. Serializer Django 模型对象
我建议使用Django model_to_dict.如果我没有弄错,也serializers.serialize()依赖它,但它只适用于list,而不是单个模型实例.这就是如何dict从单个模型中获取模型字段的实例:
from django.forms.models import model_to_dict
# assuming obj is your model instance
dict_obj = model_to_dict( obj )
Run Code Online (Sandbox Code Playgroud)
你现在只需要一个直接的json.dumps电话:
import json
json.dumps(dict_obj)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13077 次 |
| 最近记录: |