gpt4 book ai didi

Django:输出 JSON,而不是 OrderedDict

转载 作者:行者123 更新时间:2023-12-04 09:25:31 26 4
gpt4 key购买 nike

我有一个奇怪的问题。

我有一个使用 Django REST 框架构建的 API。

我正在打电话并得到以下 JSON:

{
"success": true,
"result": {
"user_type": "ta",
"email": "myemail@gmail.com",
"first_name": "John",
"last_name": "Smith",
"mobile_phone": "555-555-5555",
"id": "0f165a85-2da6-4dcb-97cb-bf04900a942b"
}
}

当我试图从 response.data 获得相同的输出时,我尝试添加一个日志中间件并将 int 写入我数据库中的文本字段。

对于相同的请求 response.data是这样的:(这被写入我的数据库,而不是上面所需的 JSON 字符串):
{'success': True, 'result': OrderedDict([('user_type', 'ta'), ('email', 'myemail@gmail.com'), ('first_name', 'John'), ('last_name', 'Smith'), ('mobile_phone', '555-555-5555'), ('id', UUID('0f165a85-2da6-4dcb-97cb-bf04900a942b'))])}

这是为什么?我怎样才能摆脱它 OrderedDict并从 response.data 获取完美的 JSON 字符串?

请注意: json.dumps不起作用。我收到 TypeError: Object of type 'UUID' is not JSON serializable .我在模型中的整个 ID 系统都是基于 UUID。但是,在上面的示例中,我的 Django REST 框架能够很好地序列化它......这是怎么做到的?

最佳答案

您遇到此问题是因为您尝试使用 json.dumps 转储内部表示。 ,它不知道如何处理 UUID 对象。

我可以看到两个选项 - 一,教 dumps如何序列化 UUID。这可以通过继承 JSONDecoder 来完成。 ,例如这个SO answer .

但是,DRF 已经知道如何序列化这些字段。在调试器中四处寻找,看起来响应文本隐藏在 response.rendered_content 中.我会检查在您的中间件运行时是否已填充。

关于Django:输出 JSON,而不是 OrderedDict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44556516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com