mysql - JSON Parse 错误:获取 json 对象后未终止的字符串
问题描述
我遇到了以下问题:
我正在从我的 nodejs 后端获取一个 json 对象,这是以下 MYSQL 操作的结果
app.get('/get_events/:playgroundId', cors(), function(req,res){
var playgroundId = req.params.playgroundId;
var sql = "SELECT date as date, CONCAT('[',GROUP_CONCAT(JSON_OBJECT('id', event_id,'time', time,'admin_id', admin_id,'playground_id', playground_id,'event_name', event_name,'description', description,'mode', mode,'type', type,'members', members,'waiting', waiting,'invited', invited)),']') AS list FROM xxx.events where playground_id = '"+playgroundId+"' GROUP BY DATE(date) ORDER BY DATE(date)";
pool.query(sql, function(err, results) {
if(err) {
console.log(err)
return res.send(err)
} else {
return res.json({
data: results
})
}
});
});
在客户端(这是一个反应应用程序)我使用以下获取:
fetch(`${global.x}/get_events/${playgroundId}`)
.then((res) => res.json())
.then((res) => {
const data = res.data
return data
}).catch((error) => {
//console.log(error)
});
整个事情基本上返回一个按日期分组的关于我在数据库中得到的事件的 json 响应。最终数据如下所示:
数组[对象{“日期”:“2021-03-17T14:52:18.000Z”,“列表”:“[{”id”:“cd66d921-8688-11eb-909e-06a351dd0cca”,“模式”:“公共", "时间": "2021-03-16 19:52:18.000000", "类型": "游戏", "邀请": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "成员": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "等待中" :[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“admin_id”:“ucLYuwevW5f2uTjdCZpVLBay6kq1”,“event_name”:“Ttt”,“描述”:“Vvv”,“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”}, id”:“e2ecc0e4-868a-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03-16 21:07:06.000000", "type": "Game", "invited": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "members": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "waiting": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "admin_id": "ucLYuwevW5f2uTjdCZpVLBay6kq1" ,“事件名称”:“Tt”,“描述”:“Ggg”,“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca” ,“模式”:“公共”,“时间”:“2021-03-16 19:52:18.000000”,“类型”:“游戏”,“邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[” ucLYuwevW5f2uTjdCZpVLBay6kq1"], "等待": ["ucLYuwe]", }, ]000000“”,“类型”:“ game”,“邀请”:[uclyuwevw5f2utjdczpvlbay6kq1“],“成员”:[“ uclyuw5f2czpvlbay6kq1”]事件名称:“Tt”,“描述”:“Ggg”,“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03-16 19:52:18.000000”,“类型”:“游戏”,“邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1” ], "等待": ["ucLYuwe]", }, ]000000“”,“类型”:“ game”,“邀请”:[uclyuwevw5f2utjdczpvlbay6kq1“],“成员”:[“ uclyuw5f2czpvlbay6kq1”]事件名称:“Tt”,“描述”:“Ggg”,“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03-16 19:52:18.000000”,“类型”:“游戏”,“邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1” ], "等待": ["ucLYuwe]", }, ]“类型”:“游戏”,“邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“等待”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“admin_id”:“ucLYuwevW6f2uVj” “Tt”,“描述”:“Ggg”,“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”: “公开”、“时间”:“2021-03-16 19:52:18.000000”、“类型”:“游戏”、“邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”]、“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”]、“等待": ["ucLYuwe]", }, ]“类型”:“游戏”,“邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“等待”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“admin_id”:“ucLYuwevW6f2uVj” “Tt”,“描述”:“Ggg”,“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”: “公开”、“时间”:“2021-03-16 19:52:18.000000”、“类型”:“游戏”、“邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”]、“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”]、“等待": ["ucLYuwe]", }, ]游戏”、“受邀”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”]、“会员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”]、“等待”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”]、“admin_id”:“ucLYuwevLBayT6f2uTjdCZpVq1”、“event_name”描述”:“Ggg”,“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03-16 19:52:18.000000”,“类型”:“游戏”,“邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“等待”:[” ucLYuwe]", }, ]游戏”、“受邀”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”]、“会员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”]、“等待”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”]、“admin_id”:“ucLYuwevLBayT6f2uTjdCZpVq1”、“event_name”描述”:“Ggg”,“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03-16 19:52:18.000000”,“类型”:“游戏”,“邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“等待”:[” ucLYuwe]", }, ]ucLYuwevW5f2uTjdCZpVLBay6kq1"], "members": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "waiting": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "admin_id": "ucLYuwevW5f2uTjdCZpVLBay6kq1", "event_name": "Tt", "description": "Ggg", "playground_id “:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03-16 19:52:18.000000", "type": "游戏", "invited": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "members": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "waiting": ["ucLYuwe]", }, ]ucLYuwevW5f2uTjdCZpVLBay6kq1"], "members": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "waiting": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "admin_id": "ucLYuwevW5f2uTjdCZpVLBay6kq1", "event_name": "Tt", "description": "Ggg", "playground_id “:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03-16 19:52:18.000000", "type": "游戏", "invited": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "members": ["ucLYuwevW5f2uTjdCZpVLBay6kq1"], "waiting": ["ucLYuwe]", }, ]等待”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“admin_id”:“ucLYuwevW5f2uTjdCZpVLBay6kq1”,“event_name”:“Tt”,“描述”:“Ggg”,“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”}, {“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03-16 19:52:18.000000”,“类型”:“游戏”, “邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“等待”:[“ucLYuwe]”,},]等待”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“admin_id”:“ucLYuwevW5f2uTjdCZpVLBay6kq1”,“event_name”:“Tt”,“描述”:“Ggg”,“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”}, {“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03-16 19:52:18.000000”,“类型”:“游戏”, “邀请”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“等待”:[“ucLYuwe]”,},]“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03 -16 19:52:18.000000”,“类型”:“游戏”,“受邀”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“等待”:[“ucLYuwe]”,},]“playground_id”:“a32bb687-7ae3-11eb-909e-06a351dd0cca”},{“id”:“eed0ee4c-8688-11eb-909e-06a351dd0cca”,“模式”:“公共”,“时间”:“2021-03 -16 19:52:18.000000”,“类型”:“游戏”,“受邀”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“成员”:[“ucLYuwevW5f2uTjdCZpVLBay6kq1”],“等待”:[“ucLYuwe]”,},]“等待”:[“ucLYuwe]”,},]“等待”:[“ucLYuwe]”,},]
如果我在数据库中只有 2 个事件,则字符串已正确关闭并且没有错误。但是,一旦我在那里有超过 2 个事件,似乎字符串变得太长或什么的,并且在没有适当转义的情况下突然结束。
我不确定来自数据库的字符是否有限制,或者客户端是否有 json 解析部分。
我在终端中遇到的错误: SyntaxError: JSON Parse error: Unterminated string
如果有人有类似的问题,请您帮忙。
谢谢!
解决方案
像这样更改 group_concat 最大长度: SET GLOBAL group_concat_max_len = 100000; 解决它。不得不移动数据库内部因为 aws rds 不允许更改默认长度。
推荐阅读
- android - 如何在 kotlin 中使用带有改造和 moshi 的泛型类型?
- javascript - Javascript字母区间函数
- react-native - 隐藏行时调整 DraggableFlatList 的大小?
- .net - 带有加密密码的 Sqlite 连接字符串
- python-3.x - 如何衡量选择排序的时间?
- python - 尽管训练数据平衡,二元神经网络仍偏向一类
- python - 删除 groupby 函数中的值
- django - 我的注册表单没有在 django 中提交
- python - 将十六进制转储转换为 ASCII
- javascript - discord.js v12:我如何等待 DM 频道中的消息?