首页 > 解决方案 > 将文本字段序列化为 json

问题描述

我正在使用的第三方应用程序将 json 存储在文本字段中。

我想将这些数据序列化为 json,我只需要能够从这个序列化程序中读取,而不是写入它。我不想在前端操作数据,所以我希望它以干净的 json 从我的 api 中出来。

class SomeSerializer(serializers.ModelSerializer):

    details = serializers.CharField()

    class Meta:
        model = SomeModel
        fields = ( 'id', 'details')

现在这是返回:

[{"id":"someID",
  "details":"{\"address\": {\"city\": null}"}"}]

我不知道如何在序列化程序中使用 json.loads,这似乎是最干净的选择。

标签: pythonjsondjangodjango-rest-framework

解决方案


您可以使用SerializerMethodField

import json
from rest_framework import serializers


class SomeSerializer(serializers.ModelSerializer):

    details = serializers.SerializerMethodField()

    class Meta:
        model = SomeModel
        fields = ('id', 'details')
    
    def get_details(self, obj):
        return json.loads(obj.details)

请注意, SerializerMethodField 是read_only,不能用于写入。


推荐阅读