在项目中 , 经常需要将数据封装为一个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

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐