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

如何在TypeScript中解析指定JSON字符串?JSON.parse报错排查

解决JSON.parse()解析MongoDB查询字符串的报错问题

错误原因

你的问题出在JSON语法不规范和JavaScript字符串转义错误:

  • JSON要求所有键(比如$and、status、$ne)必须用双引号包裹,不能省略
  • JSON里的字符串值只能用双引号,单引号'不符合JSON规范
  • 在JS中用双引号包裹字符串时,内部的双引号必须用反斜杠\转义,否则会触发语法错误

正确的解决方法

方法1:直接使用JavaScript对象(推荐)

如果不需要把查询作为字符串处理,直接定义JS对象就行,不用JSON.parse():

const query = { 
  $and: [
    { status: { $ne: 'Completed' } }, 
    { status: { $ne: 'Canceled' } }
  ] 
};

这种写法既符合MongoDB的查询语法,也不会有JSON解析问题。

方法2:规范JSON字符串并正确转义

如果必须用字符串形式,要确保JSON语法正确,同时转义内部双引号:

const queryStr = "{ \"$and\": [{ \"status\": { \"$ne\": \"Completed\" } }, { \"status\": { \"$ne\": \"Canceled\" } }] }";
const query = JSON.parse(queryStr);

或者用单引号包裹整个字符串,内部用双引号,这样不用转义:

const queryStr = '{ "$and": [{ "status": { "$ne": "Completed" } }, { "status": { "$ne": "Canceled" } }] }';
const query = JSON.parse(queryStr);

验证

用上面的方法处理后,JSON.parse()就能正常解析,不会再出现SyntaxError: Unexpected token ' in JSON at position 31的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:14:54