Django ArrayField的序列化转义了带有太多反斜杠的重音字符

时间:2016-08-09 11:34:36

标签: json django postgresql encoding

Django为我们提供了ArrayField:一个PostgreSQL特定的模型字段,允许存储data的列表。

我用它来建模一个Article对象:

authors = ArrayField(models.Charfield) 
title = models.CharField

例如,这是数据库中的一个条目:

  • authors = {“PierreStévens”,“Jacques Dupont”}
  • title = Sur leterraincrétacédeLiège

我想将所有文章导出为JSON

query_set = Article.objects.all()
articles_json = serialize('json', fields('authors', 'title')

ArrayField“authors”的序列化使用四个反斜杠而不是两个来转义重音字符“é”。常规“标题”字段已正确转义。看看差异:

articles_json = {"title":"Sur le terrain cr\\u00e9tac\\u00e9 de Li\\u00e9ge", "authors": "[\\"Pierre St\\\\u00e9\\", "Jacques Dupont"]"}

客户不理解这一点。为了使它工作,我只是搜索并替换字符串

articles_json = articles_json.replace('\\\\','\\')

我真的不确定这种解决方法。你有没有试过这个问题?你是怎么解决的?

0 个答案:

没有答案