Express.js中如何返回字典对象而非数组格式的JSON响应
问题原因
你拿到的sqlResults本身就是数组类型,SQL查询接口默认会把所有匹配的结果放在数组里返回,哪怕只命中1条数据,也会用数组包裹,所以直接序列化整个数组自然会带上外层的方括号。
解决方法
只需取出数组中的第一个元素再序列化返回即可,修改后代码如下:
// 取数组第一个元素后再序列化 var ress = JSON.stringify(sqlResults[0]) console.log('response json:' + ress) res.send(ress)
优化建议
为了避免查询结果为空时取值报错,建议先判断数组是否有值再处理:
if (Array.isArray(sqlResults) && sqlResults.length) { res.send(JSON.stringify(sqlResults[0])) } else { // 无匹配结果时按业务需求返回对应内容,示例返回空对象 res.send(JSON.stringify({})) }
如果你使用的是Express、Koa这类常用Node服务框架,不需要手动调用JSON.stringify,直接返回JS对象即可,框架会自动完成序列化:
// Express 示例 if (Array.isArray(sqlResults) && sqlResults.length) { res.send(sqlResults[0]) } else { res.send({}) }
内容的提问来源于stack exchange,提问作者azam
相关产品推荐
相关产品推荐

