首页 > 解决方案 > 在 django rest 框架中将 python 字典转换为 json 类型

问题描述

这是一个理解问题,而不是代码问题。我使用 DRF 一年了。当我了解序列化程序时,它说有两个步骤。

对于获取请求,序列化程序类的作用是:

  1. 将复杂的数据类型(如查询集)转换为 Python 数据类型(如字典)。
  2. 将字典转换为 json 格式,作为响应发送到 api。

我使用打印命令来查看正在发生的一切或使用 shell。我可以看到第一步正在发生,即我可以看到复杂的查询集,并且在序列化之后可以看到查询集的字典。但是在代码中我看不到第二步的发生。虽然 json 格式与 python 字典没有太大区别。我看到的唯一区别是 json 中的双引号而不是单引号。但是,转换仍然需要发生。它是自动发生的还是我在这里遗漏了什么?

我的片段:

在此处输入图像描述

我打印的查询集和序列化数据:

在此处输入图像描述

在这里,打印的电子邮件是复杂的数据。序列化后它被转换为python字典。但是,进入 postman 的 JSON 数据是这样的。

在此处输入图像描述

标签: pythonjsondjangodictionarydjango-rest-framework

解决方案


Serializer.data给你一个实例,rest_framework.utils.serializer_helpers.ReturnDict它只是一个轻量级的OrderedDict. OrderedDict是 Pythondict专门用于维护键的插入顺序的进一步扩展。由于 JSON 是用于传输数据的基于文本的格式,因此OrderedDict与序列化程序对应的实例首先被字符串化,然后被发送。由于 JSON 是一种标准化格式,浏览器能够解析字符串表示并漂亮地打印出来。


推荐阅读