欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java Web项目中Spring框架处理JSON格式数据的方法

程序员文章站 2024-03-12 11:56:32
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的处理就相当方便了。