python - 将文本字段序列化为 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,这似乎是最干净的选择。
解决方案
您可以使用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
,不能用于写入。
推荐阅读
- javascript - 你如何将一个大数组分成三个一组而不分开?
- node.js - 如何在节点中使用 Crypto?
- java - JRE 使用 CPLEX LazyCallBack 检测到致命错误
- python - GUI 在单独的进程中触发操作
- sqlite - 遍历带有标记节点的树上的给定路径
- api - API 保护 - JWT vs HMAC 签名 vs OAuth
- reactjs - 如何在 React App 中设置 process.env.PUBLIC_URL
- language-agnostic - 为什么 LZ77 的实现不同?
- ios - 用“const 常量”声明变量的目的是什么?
- python - 在 Django 中迁移和创建超级用户后出现“没有这样的表:accounts_user”