在项目中 , 经常需要将数据封装为一个JSON对象返回给前台进行解析 . 但如果数据中包含双引号或单引号 , 就会导致部分框架在解析JSON时失败 , 无法处理(笔者后台采用的fastjson封装json , 前台用jquery解析json) , 所以这部分数据就需要进行特殊处理 , 使之能够正常解析.
一般来说 , 碰到单引号或双引号 , 用斜杠"\"转义就行 . 但在实际应用中 , 这种方法总是会出现各种问题 , 并且随着jQuery对json的格式严格要求 , 所以只有符合它的标准才能被其解析.

问题示例 : 

后台封装JSON

前台解析JSON

解析失败 , 提示报错

我的解决方法是 : 在生成JSON时 , 将特殊的单引号用自定义的字符占位 , 到前台解析时 , 先进行复原

解决方案 : 

@RequestMapping()
	public String index(Model model){
		JSONObject result = new JSONObject();
		result.put("name", "Tony'Fu".replaceAll("'", "%DYH%"));//用特殊符号进行占位
		
		model.addAttribute("data", result);
		
		return "demo";
	}
<script type="text/javascript">
	var data = $.parseJSON('${data}');
	alert(data.name);
</script>

试验下效果 , 果然成功了 ~

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐