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

JSON.parse解析MySQL返回的JSON字符串无效,求解决方案

解决MySQL查询返回的JSON字符串转原生JSON数组问题

方法1:修改MySQL查询语句,使用JSON_UNQUOTE包裹聚合结果

你的查询用了JSON_ARRAYAGG和JSON_OBJECT,默认返回的JSON类型可能被客户端驱动转义成字符串。可以在聚合函数外层加上JSON_UNQUOTE,让返回的结果直接是不带转义的原生JSON结构:

SELECT JSON_UNQUOTE(JSON_ARRAYAGG(JSON_OBJECT('id', id, 'name', name))) AS products 
FROM your_table 
WHERE ...;

方法2:在DAO层单独解析products字段

你之前解析整个查询结果无效,是因为products是结果对象中的单个字符串属性,需要单独对它做JSON.parse处理。在productsDao.js中拿到查询结果后,遍历处理每个条目:

// productsDao.js 示例代码
async function getProducts() {
  const [rows] = await connection.query('你的查询语句');
  // 遍历结果,解析products字段
  return rows.map(row => ({
    ...row,
    products: JSON.parse(row.products)
  }));
}

方法3:配置MySQL驱动自动解析JSON类型

如果使用mysql2驱动,可以在创建连接时开启json选项,驱动会自动将MySQL返回的JSON类型字段解析为JS原生数组/对象,无需手动处理:

// 连接配置示例
const mysql = require('mysql2/promise');

const connection = await mysql.createConnection({
  host: '你的主机',
  user: '用户名',
  password: '密码',
  database: '数据库名',
  json: true // 开启自动JSON解析
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:31:17