2017-1226
springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用 – 徐杰[ 分类:所有文章 ]
springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用
主要内容:
这篇文章主要是总结之前使用springmv接收json的时候遇到的问题,下面通过前台发送ajax数据后天springmvc接收,总结springmvc接收并处理ajax的问题。
注意点:
1、前台发送ajax数据时必须设置的属性:
contentType='application/json' 如果不设置,后台获取到的将是url编码的文本,该属性是指定发送的数据的类型为json。
2、本文后台使用fastjson解析json
jsp
function fun(){ $.ajax({ url:'/testAjax.action', data:"{'name':'xujie','age':'25'}", type:'POST', dataType:'json', contentType:'application/json' }) }contentType:’application/json’ //告诉服务器我发送的是json格式数据
dataType:’json’,//告诉服务器,我要接收的是json格式数据
Controller
直接获取对象中的属性 @RequestMapping(value = "testAjax.action",method = RequestMethod.POST) public void testAjax(@RequestBody String jsonstr){ JSONObject jsonObject = JSONObject.parseObject(jsonstr);//将json字符串转换成json对象 String age = (String) jsonObject.get("age");//获取属性 System.out.println(age); } 封装到某个pojo中: @RequestMapping(value = "/testAjax.action",method = RequestMethod.POST) @ResponseBody public String testAjax(@RequestBody String jsonstr){ Person person = JSONObject.parseObject(jsonstr, Person.class);//将json字符串转换成json对象 System.out.println(person); return "200"; }输出
Controller
@RequestMapping(value = "testAjax.action",method = RequestMethod.POST) public void testAjax(@RequestBody String jsonstr){ JSONArray array = JSONObject.parseArray(jsonstr); JSONObject jsonObject = JSONObject.parseObject(array.get(0).toString()); String name = (String) jsonObject.get("name"); System.out.println(name); //获取到了第一个对象的name }jsp
function fun(){ $.ajax({ url:'/testAjax.action', data:"[{'name':'xujie','age':'25'},{'name':'yuanxiliu','age':'20'}]", type:'POST', dataType:'json', contentType:'application/json' }) }输出
List/map
Controller
jsp
function fun(){ $.ajax({ type : "post", dataType : "json", url : "/testAjax.action", success : function(result) { alert(JSON.stringify(result)); } }); }****要点:****
在我做这篇总结的时候,一直忘了一个事,导致使用@ResponseBody返回的时候,前台一直报错:406 (Not Acceptable) 最终发现如果使用@ResponseBody必须要添加jackson的依赖,因为springmvc在做返回的时候通过jackson去判断返回什么类型,我这里用的maven所以添加依赖:
Controller
@RequestMapping(value = "testAjax.action",method = RequestMethod.POST) public void testAjax(HttpServletResponse response){ ArrayList<String> list = new ArrayList<String>(); list.add("apple"); list.add("orange"); list.add("pea"); String jsonlist = JSON.toJSONString(list); response.getWriter().write(jsonlist); }jsp
function fun(){ $.ajax({ url:'/testAjax.action', type:'POST', dataType:'json', contentType:'application/json', success:function(data){ alert(JSON.stringify(data)); } }) } map:Controller
@RequestMapping(value = "testAjax.action",method = RequestMethod.POST) public void testAjax(HttpServletResponse response){ HashMap<String, String> map = new HashMap<String, String>(); map.put("name","xujie"); map.put("age","23"); String jsonlist = JSON.toJSONString(map); response.getWriter().write(jsonlist); }jsp
function fun(){ $.ajax({ url:'/testAjax.action', type:'POST', dataType:'json', contentType:'application/json', success:function(data){ alert(JSON.stringify(data)); } }) } 对象 @RequestMapping(value = "testAjax.action",method = RequestMethod.POST) @ResponseBody public void testAjax(HttpServletResponse response) throws Exception { Person person = new Person(); person.setAge("23"); person.setName("xujie"); String string = JSON.toJSONString(person); response.getWriter().write(string); }jsp
function fun(){ $.ajax({ url:'/testAjax.action', type:'POST', dataType:'json', contentType:'application/json', success:function(data){ alert(JSON.stringify(data)); } }) }
« 移植 MQTT broker mosquitto 到 omapl138 – 杰良
前后端分离ueditor富文本编辑器的使用-Java版本 – web喵神 »