You need to enable JavaScript to run this app. Django接口查询含None值数据触发JSONDecodeError解析失败问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Django接口查询含None值数据触发JSONDecodeError解析失败问题求助

问题根因
  • 核心错误来自你手动处理序列化的逻辑:Python语言的空值标识为None,JSON标准的空值标识为null。你将包含空值的查询结果列表直接转为字符串后,仅替换单引号为双引号,得到的内容里会保留大写的None,不符合JSON语法规则,所以触发JSONDecodeError报错。
  • 额外风险:如果你的name等字符串字段本身包含单引号,replace("'",'"')操作也会破坏字符串结构,同样会引发解析错误,这种手动转义的方式本身就存在可靠性缺陷。
修复方案

直接使用Django REST Framework原生的序列化能力,完全不需要手动做字符串转换、JSON解析/序列化的冗余操作,修改后代码如下:

@api_view(['GET'])
def edges_of_a_network(request, pk):
    try:
        roadnetwork = RoadNetwork.objects.get(pk=pk)
    except RoadNetwork.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    edges = Edge.objects.filter(network=roadnetwork).values("edge_id", "name", "length", "speed", "lanes")
    return Response(edges)

DRF的Response会自动将Python对象序列化为符合JSON规范的返回内容,自动把None转换为JSON兼容的null,同时处理引号、特殊字符转义等问题,也会自动设置正确的响应头,比手动处理的逻辑稳定可靠。

内容的提问来源于stack exchange,提问作者aba2s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:21:02