问题描述
场景
后端php,json_encode数据返回给前端,
前端通过JSON.parse处理为json对象JSON.parse('<?php echo json_encode($json,JSON_FORCE_OBJECT|JSON_UNESCAPED_UNICODE); ?>')
。
报错
Unexpected token in JSON at position
排查方法
浏览器F12调出控制台,将php返回的字符串复制过来
一次一次的删除正常字符串,执行,最终找到报错点
后端PHP或者前端,处理掉报错特殊字符
目前遇到的几个特殊字符如下
'
:单引号\n
:换行符字符串\"
:双引号字符串``:反斜杠字符串
处理方法
'
:增加JSON_HEX_APOS
参数,将单引号转换为unicode编码。
json_encode($json,JSON_FORCE_OBJECT|JSON_UNESCAPED_UNICODE|JSON_HEX_APOS)
``:在JSON.parse参数内需要将反斜杠转义。
$json = str_replace('\','\\\\',$json);
后端通过以上两个修改,基本可以解决报错问题。