springmvc对JSON数据支持
springmvc对JSON数据支持
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。
JSON可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web客户端传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且JSON可以表示比"名称/值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
JSON数据格式在接口调用、html页面中比较常用,JSON格式比较简单,解析也比较方便,所以使用很普遍。在SpringMVC中,也支持对JSON数据的解析和转换
1 JSON表示名称/值对:
按照最简单的形式,可以用下面这样的JSON表示"名称/值对":{ "firstName": "David" },这个示例非常基本,而且实际上比等效的纯文本"名称/值对"占用更多的空间:firstName=Brett,但是,当将多个"名称/值对"串在一起时,JSON就会体现出它的价值了。首先,可以创建包含多个"名称/值对"的 记录,比如:
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。
例如,它明确地表示以上三个值都是同一记录的一部分,花括号使这些值有了某种联系。
2 JSON表示数组:
当需要表示一组值时,JSON不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在XML中,需要许多开始标记和结束标记;如果使用典型的名称/值对,那么必须建立一种专有的数据格式,或者将键名称修改为person1-firstName这样的形式。
如果使用JSON,只需将多个带花括号的记录分组在一起:
{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
]}
需求:客户端发送JSON格式的数据,服务器端将JSON格式数据转换为对象类型,然后返回JSON格式数据,接下来客户端对数据内容进行显示。
即:请求和返回都是JSON格式数据。
3 开发环境搭建:
1.引入maven依赖:
<!--对json的支持--> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.9</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.9</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.9</version> </dependency>
2. 添加springmvc对json的支持
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="jsonHttpMessageConverter" /> </list> </property> </bean> <bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean>
备注:<mvc:annotation-driven></mvc:annotation-driven>也可以
3.配置controller层代码:
@RequestBody接受前台json数据,把json数据自动封装model。
findStuById(@RequestBody Stu stu)
@ResponseBody把后台model转换json对象,返回到页面。
@RequestMapping("/findStuById2.do") public @ResponseBody Student findStuById2(){ Student stu=stuService.FindStu(1); System.out.println(stu); return stu; }
3.运行测试:http://localhost:8080/findStuById2.do