NSJSONSerialization解析失败:末尾反斜杠致JSON格式错误排查
问题分析与解决办法
问题根源
你遇到的核心问题是JSON转义规则被破坏:
数据库原始文本stuff stuff :o\末尾的反斜杠,在PHP手动生成JSON时被转成了\\,但最终输出的JSON片段是"notetext": "stuff stuff :o\\",——按照JSON语法,\\会被解析为一个反斜杠,而它紧跟的双引号会被这个反斜杠转义成\",直接导致字符串的闭合引号失效,整个JSON结构损坏,所以NSJSONSerialization解析时会报错格式不正确。
正确解决方式
绝对不要手动拼接JSON字符串,必须使用PHP原生的json_encode()函数处理:
- 从数据库取出原始文本后,将其存入PHP数组:
$responseData = [ 'notetext' => $rawDbContent // 这里是从数据库获取的`stuff stuff :o\` ];
- 调用
json_encode()生成标准合规的JSON:
$jsonPayload = json_encode($responseData);
json_encode()会严格遵循JSON规范处理所有特殊字符:原始文本里的单个反斜杠,会被自动转译为JSON要求的\\(对应PHP字符串里的\\\\),最终生成的JSON字符串部分会是"stuff stuff :o\\\\"——既保留了原始的反斜杠,又不会破坏JSON的结构,iOS端就能正常解析。
关键提醒
手动拼接JSON极易忽略转义细节,比如反斜杠、引号这类特殊字符的处理,而json_encode()会自动处理所有JSON语法要求的转义逻辑,从根源避免格式错误。
内容的提问来源于stack exchange,提问作者Kenny Wyland
相关产品推荐
相关产品推荐

