使用了一个解析json的jar包, json-lib.jar以及一些关联的jar包
1、后台传递json字符串,用jquery获取并解析
(1)需要再后台构造出json的字符串。这里我使用的是将一个javabean,转换成json字符串的方法。然后发送到前台
- List<Person> persons = personService.getPersonList();
- response.setContentType("text/html;charset=utf-8");
- response.setCharacterEncoding("utf-8");
- PrintWriter pw= response.getWriter();
- JSONArray json_ps = JSONArray.fromObject(persons);
- pw.write(json_ps.toString());
然后再前台,我们在$.post()的返回函数中获取,并解析。有一点,使用post()和ajax()解析的时候,有一点不太一样
$.post()方式:
- $.post(
- "<%=request.getContextPath()%>/info.do",
- {personStr:person},
- function(ps){
- var persons = $.parseJSON(ps);
- $.each(persons,function(i){
- alert(persons[i].name);
- });
- });
$.ajax()方式:
- $.ajax({
- type:"post", url:"<%=request.getContextPath()%>/info.do",
- data:{personStr:person},
- success:function(ps){
- $.each(ps,function(i){
- alert(ps[i].name);
- });
- },
- dataType:"json"});
- });
用$.post()或取的数据需要用$.parseJSON()方法转换成json对象,而$.ajax()方法不需要,它得到的直接就是一个json对象,可以直接访问。
2、传递json对象到后台
这个主要是需要构造出正确的json字符串,然后当成普通的字符串发送到后台就行了,然后在后台解析。
- var person = '{"id":5,"name":"aa","age":25,"high":155.00}';
- String personJ = request.getParameter("personStr");
- JSONObject jsonObject = JSONObject.fromObject(personJ);
- Person person = (Person)JSONObject.toBean(jsonObject,Person.class);
其中"personStr"就是前台通过ajax传递过来的json数据。