SQL中ISJSON对JSON.stringify生成内容返回false的原因排查
排查前端JSON.stringify生成内容被SQL ISJSON判定为非JSON的原因
以下是几个常见的原因及解决办法:
外层多余的单引号导致识别失败
你提供的内容被单引号包裹:'[{"value":"TB12","label":"Tom Brady"},{"value":"TW95","label":"Tiger Woods"},{"value":"PM10","label":"Peyton Manning"}]',SQL的ISJSON会将整个带单引号的内容视为普通字符串,而非JSON结构。
解决:前端传递时去掉外层单引号,直接传递纯JSON内容:[{"value":"TB12","label":"Tom Brady"},{"value":"TW95","label":"Tiger Woods"},{"value":"PM10","label":"Peyton Manning"}]。存在隐藏字符或转义错误
若前端传递过程中引入了全角空格、控制字符等不可见内容,或者双引号被错误转义,也会导致ISJSON判定失败。
解决:- 前端用
console.log输出JSON.stringify的结果,确认内容无异常转义或隐藏字符; - SQL中可先通过
TRIM函数清理首尾不可见字符,再校验:SELECT ISJSON(TRIM(your_json_string)) FROM your_table;
- 前端用
SQL Server版本不兼容
ISJSON函数仅在SQL Server 2016及以上版本支持,若使用更早版本,会直接返回0。
解决:确认SQL Server版本,升级至支持JSON功能的版本,或改用自定义JSON校验逻辑。
内容的提问来源于stack exchange,提问作者Cody
相关产品推荐
相关产品推荐

