JSONLint格式化校验JSON
1、eval()解析,不推荐 var jsondata='{staff:[{"name":"张三","age":"70"},{"name":"李四","age":"40"}]}';
var jsonObj=eval('('+jsondata+')');
alert(jsonObj.staff[0].name);
因为eval()解析时不止解析json字符串,也会执行里边的方法,例如 "name":alert("a")
此时会将a输出。
2、JSON.parse()解析,推荐
var jsondata='{staff:[{"name":"张三","age":"70"},{"name":"李四","age":"40"}]}';
var jsonObj=JSON.parse(jsondata);alert(jsonObj.staff[0].name);
3、JSON中文乱码
我使用的Springmvc,在controller层传输一个json到前台,后台显示没问题,中文正常显示而到了前台
中文就变成了问号。
后来发现,因为在controller中返回json用了@ResponseBody,而spring源码中@ResponseBody 的实现类发现其默认的编码是 iso-8859-1,而项目用的编码为utf-8,所以传中文会出现乱码。
这里我使用了注解来解决:
这种方法比较适用于新版本的spring,本项目的版本:
以上所述是小编给大家介绍的用ajax传递json到前台中文出现问号乱码问题的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支
<script type="text/javascript"> window.onload = $(function () { var aid = 1; aid = encodeURI(aid), $.ajax({ type: "POST", url: "/common/test", data: {id: aid}, async: true, success: function (list) { $.each(list, function (idx, obj) { alert(obj[0].goods_description); }); }, error: function (list) { alert("error" + list.length); } } ) }) </script>
@RequestMapping(value = "test",produces = "application/json; charset=utf-8") @ResponseBody public String test(HttpServletResponse response, String id, Map<String, Object> map) { response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); System.out.println(id); List<Goods> list = integral_search_service.getIntroductionById(id); map.put("list", list); String jsonString= JSON.toJSONString(map); System.out.println(list); return jsonString; }