Java Web项目中Spring框架处理JSON格式数据的方法
程序员文章站
2024-03-11 19:34:31
json是一种常见的传递格式,是一种键值对应的格式。并且数据大小会比较小,方便传递。所以在开发中经常会用到json。
首先看一下json的格式:
{key1:v...
json是一种常见的传递格式,是一种键值对应的格式。并且数据大小会比较小,方便传递。所以在开发中经常会用到json。
首先看一下json的格式:
{key1:value1,key2:value2}
每一个建对应一个值,每个键值对之间用逗号连接。并且最后一个键值对之后没有逗号,整体需要有大括号括起来。
一般正常的servlet返回json时,会像下面这样:
response.setcontenttype("text/json;charset=utf-8"); response.getwriter().print(gson.tojson(page)); response.getwriter().flush(); response.getwriter().close(); return null;
这样相对来说比较麻烦,也不好封装。新版spring返回json时,可以通过@responsebody直接返回,这点做得很不错,大概代码如下:
@controller @requestmapping("/json") public class jsoncontroller { @requestmapping(value="{provinceid}",method = requestmethod.get) @responsebody public string pagination(@pathvariable string provinceid){ return getjsondata(provinceid); } }
访问方式如下:http://localhost:8080/spring3/action/json/1,有一点需要注意下,那就是访问spring mvc的controller时中间加了个/action,那是因为dispatcherservlet的映射路径如果直接使用/*的话,会将相应的jsp屏蔽掉,所以一定得加个前缀以区别jsp与controller.
上面的json中如果有中文的话,会出现乱码,所以则修改spring-servlet.xml配置文件,修改下annotationmethodhandleradapter的messageconverters即可,因为其默认采用的iso8895-1的编码,代码如下:
<bean class="org.springframework.web.servlet.mvc.annotation.annotationmethodhandleradapter"> <property name="webbindinginitializer"> <bean class="com.mvc.commons.commonsbindinginitializer" /> </property> <property name="messageconverters"> <list> <bean class="org.springframework.http.converter.stringhttpmessageconverter"> <property name="supportedmediatypes"> <list> <value>text/plain;charset=utf-8</value> </list> </property> </bean> </list> </property> </bean>
经过这些步骤后,对json的处理就相当方便了。