首页 > 解决方案 > 如何使用 json.dumps 将包含内存模型实例的字典转换为字符串

问题描述

import json 
dict = {'username': u'Toto', 'staffTitle': u'Mr', 'staffName':     u'Toto', 'company': <Company: Test1>, 'qualifications': [{u'dateObtained': u'2017-11-22', u'qualificationId': 1048,}

convert_to_string = json.dumps (dict)
sa_ = sanitize_data(conver_to_string)
back_to_dict = json.loads(sa_)


def sanitize_data(dirty_data):

    clean_data = re.sub('(<0x\w*>)|\s',"", dirty_data)
    return clean_data

所以我想要实现什么。要使用 json.dumps 将 dict 转换为字符串,然后使用我制作的函数来清理和删除 non_ascii 字符并将其转换回 dict 并保存。因为,字典中有一个内存实例('company': )部分。我有一个错误,转储不起作用。我怎样才能解决这个问题并能够将此字典转换为字符串并处理数据?有任何想法吗?

标签: pythondjango

解决方案


正如其他人在评论中已经提到的那样,json.dumps()不会在 python 类或 Django 模型实例上开箱即用。如果您想将数据公开给 REST API,Django REST 框架非常好,它可以让您以可维护的方式只公开您想要的字段。

如果这是为了内部使用,Django 有一个内置的序列化框架:

from django.core import serializers
data = serializers.serialize("json", Company.objects.get(name="test"))

这对于快速序列化来说很简单,但可能不适合通过 REST API 将模型暴露给外部世界,在这种情况下,DRF 是一个更好的选择。


推荐阅读