You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除JSON返回结果中的反斜杠\转义字符

数据库查询接口返回JSON带多余反斜杠解决方案

问题复现

当前编写的数据库查询接口代码如下:

cursor = connection.cursor()
cursor.execute('SELECT patientFirstName, patientLastName FROM `patientmaster` WHERE nik = "1"')
patientProfile = cursor.fetchall()

patientProfileArray = []
patientName = None

for row in patientProfile:
    patientFirstName = row[0]
    patientLastName = row[1]

patientProfile = {'Patient': [{'patientFirstName': patientFirstName, 'patientLastName': patientLastName}]}

responseObject = {}
responseObject['statusCode'] = 200
responseObject['headers'] = {}
responseObject['body'] = json.dumps(patientProfile, default=str)
return responseObject

接口实际返回结果带多余转义反斜杠:

{\"Patient\": [{\"patientFirstName\": \"vin\", \"patientLastName\": \"wan\"}]}

根因分析

  • 核心问题是JSON重复序列化:手动调用json.dumps()将字典转为JSON字符串后,接口运行环境(如Serverless函数平台、部分Web框架)会自动对整个返回对象再次做JSON序列化,字符串内的双引号就会被加上转义反斜杠。
  • 现有代码还存在逻辑漏洞:遍历查询结果集时每次循环都会覆盖姓名字段变量,最终只会保留最后一条查询记录,前面的结果会全部丢失。

修复方法

根据部署场景二选一即可:

  1. Serverless类自动序列化环境(如Lambda、云函数):不需要手动序列化JSON,直接传入字典对象,同时补全遍历逻辑和响应头:
cursor = connection.cursor()
cursor.execute('SELECT patientFirstName, patientLastName FROM `patientmaster` WHERE nik = "1"')
patient_rows = cursor.fetchall()

patient_list = []
for row in patient_rows:
    patient_list.append({
        "patientFirstName": row[0],
        "patientLastName": row[1]
    })

responseObject = {
    "statusCode": 200,
    "headers": {"Content-Type": "application/json"},
    "body": {"Patient": patient_list}
}
return responseObject
  1. 原生Web框架(如Flask、Django)手动序列化场景:保留json.dumps()逻辑,但禁止对最终返回的responseObject整体再次做序列化,同时补全正确的Content-Type响应头:
import json
cursor = connection.cursor()
cursor.execute('SELECT patientFirstName, patientLastName FROM `patientmaster` WHERE nik = "1"')
patient_rows = cursor.fetchall()

patient_list = []
for row in patient_rows:
    patient_list.append({
        "patientFirstName": row[0],
        "patientLastName": row[1]
    })

responseObject = {
    "statusCode": 200,
    "headers": {"Content-Type": "application/json"},
    "body": json.dumps({"Patient": patient_list}, default=str)
}
return responseObject

修复后即可得到标准无转义的JSON返回结果:

{"Patient": [{"patientFirstName": "vin", "patientLastName": "wan"}]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:24:19