做前端开发时,经常要跟接口打交道,而接口返回的数据基本都是JSON格式。有时候,数据里夹着一些奇怪的符号,比如引号、换行符甚至制表符,一不小心就会让整个解析出错。
常见的特殊字符有哪些
JSON字符串中允许使用一些转义字符来表示特殊意义的符号。最常见的包括:\n(换行)、\t(制表符)、\"(双引号)、\\(反斜杠本身)。如果这些字符没有正确转义,JSON就不再是合法格式。
举个例子,假设从服务器拿到一段数据:
{"message": "用户说:"这功能真难用""}"}
这段JSON是非法的,因为内部的双引号没有转义,直接打断了字符串结构。正确的写法应该是:
{"message": "用户说:\"这功能真难用\""}
JavaScript中如何安全处理
在JS里,通常用JSON.parse()来解析字符串。但如果原始字符串含有未转义的特殊字符,这一步就会抛错。
实际项目中,后端传来的字段可能来自用户输入,比如评论内容。用户打了一段带换行的文字,直接拼进JSON却不处理,前端就会卡住。
解决办法很简单:后端输出前必须对字符串做JSON编码。大多数语言都有对应函数,比如PHP的json_encode(),Python的json.dumps(),它们会自动处理引号和控制字符。
手动转义的注意事项
如果你需要自己构造JSON字符串(不推荐,容易出错),一定要记得替换这些字符:
- 双引号 " → \"
- 反斜杠 \ → \\\
- 换行 \n → \\n
- 回车 \r → \\r
- 制表符 \t → \\t
还有一种情况是Unicode字符,比如表情符号😊。它们在JSON中可以保留原样,但某些老旧系统可能要求转成\u编码形式,例如\u{1f60a}。
遇到解析失败怎么办
当JSON.parse报错时,先别急着改代码,打开浏览器控制台看看具体是哪一行出问题。多数时候错误提示会指出“unexpected token”,这时候检查前后字符有没有漏转义的引号或控制符。
也可以用在线JSON校验工具粘贴原始数据,快速定位格式问题。修复后再交给程序处理,省得反复调试。
实际工作中,只要后端规范输出,前端基本不会碰到这类问题。关键是双方对接时明确数据格式标准,避免因一个引号耽误半天时间。