JSON

springMVC学习总结(四)springmvc处理json数据类型以及fastjson

字号+ 作者:H5之家 来源:H5之家 2018-01-28 12:03 我要评论( )

2017-12 26 springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用 徐杰 [ 分类:所有文章 ] springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用 主要内容: 这篇文章主要是总结之前使用springmv接收json的时候遇到的问题

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

一、后台接收json数据以及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"; }

输出

json数组

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' }) }

输出

二、后台发送json数据: 1、通过springmvc的注解@ResponseBody 示例:

List/map
Controller

@RequestMapping(value = "testAjax.action",method = RequestMethod.POST) @ResponseBody public ArrayList<String> testRequestBody() { //这里以list为例,map跟这个一样的 ArrayList<String> list = new ArrayList<String>(); list.add("apple"); list.add("orange"); list.add("pea"); return list; }

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所以添加依赖:

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> 2、通过httpServletResponse的writer返回: list:

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喵神 »

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Python学习笔记(九)json数据类型

    Python学习笔记(九)json数据类型

    2018-01-28 11:18

  •  JSON学习札记

    JSON学习札记

    2018-01-27 18:44

  • SpringMVC @RequestBody 接收Json数组对象

    SpringMVC @RequestBody 接收Json数组对象

    2018-01-26 11:14

  • jqgrid学习记录,从外部url获取json数据

    jqgrid学习记录,从外部url获取json数据

    2018-01-24 18:05

网友点评