为什么要序列化查询集我获得一个字符串?

问题描述 投票:1回答:1

我正在使用js函数从我的django模型中获取一些数据。具体来说,我想从传感器中获取最后一个值。

我正在执行以下操作,

from django.core import serializers
def getData(request):
    ctx = {}
    if request.method == 'POST':
        select = int(request.POST['Select'])

        last_val = DevData.objects.order_by('dev_id','-data_timestamp').distinct('dev_id')
        data = serializers.serialize('json', last_val)
        print(data)
        print('****************')
        print(data[0]) # I just obtain a "[" then is a string not a list
        ctx = {'Select':data}

    return JsonResponse(ctx)

我的问题是,为什么输出是字符串?如何将其转换为Json对象,然后将其传递给我的js函数?

非常感谢!

python django serialization
1个回答
2
投票

您获得一个字符串,因为JSON是一种文本格式。例如,您可以使用json.loads将其转换回词典列表:

from json import loads as jsonloads
from django.core import serializers

def getData(request):
    ctx = {}
    if request.method == 'POST':
        select = int(request.POST['Select'])

        last_val = DevData.objects.order_by('dev_id','-data_timestamp').distinct('dev_id')
        data = jsonloads(serializers.serialize('json', last_val))
        ctx = {'Select':data}
    return JsonResponse(ctx)

Django中的JSON序列化只是一个名为JsonEncoder的特殊DjangoJSONEncoder [GitHub],对于DjangoJSONEncoder对象有一些特殊情况,等等。>

© www.soinside.com 2019 - 2024. All rights reserved.