JSON解析

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,所以传中文会出现乱码。

这里我使用了注解来解决:

?
1
@RequestMapping(value= "/echarts.do" , produces = "application/json; charset=utf-8" )

这种方法比较适用于新版本的spring,本项目的版本:

?
1
<spring.version>4.1.4.RELEASE</spring.version>

以上所述是小编给大家介绍的用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;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值