JSON数据交互

作者: 小小蒜头 | 来源:发表于2017-12-11 23:01 被阅读387次

    一、为什么要进行json数据交互?

    json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析还比较方便。
    比如:webservice接口,传输json数据.

    二、springmvc进行json交互

    1. 请求json、输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成json,不太方便。
    2. 请求key/value、输出json。此方法比较常用。
    交互

    三、环境准备

    springmvc中使用jackson的包进行json转换(@requestBody和@responseBody使用下边的包进行json转),如下:

    jar包
    <!--json包-->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.7.2</version>
        </dependency>
        <dependency>
          <groupId>org.codehaus.jackson</groupId>
          <artifactId>jackson-mapper-asl</artifactId>
          <version>1.9.13</version>
        </dependency>
    

    四、配置json转换器

    在注解适配器中加入messageConverters。

    <!--注解适配器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
        <list>
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
        </list>
        </property>
    </bean>
    

    注意::如果使用<mvc:annotation-driven />则不用定义上边的内容。

    五、为什么要进行json数据交互?

    5.1 输入json串,输出是json串

    使用jquery的ajax提交json串,对输出的json结果进行解析。页面代码:

     function requestJson() {
           $.ajax({
               type: 'post',
               url: '/requestJson.action',
               contentType: 'application/json;charset=utf-8',
                 //数据格式是json串,商品信息
               data: '{"name":"手机","price":999}',
               success: function (data) {//返回json结果
                   alert(data);
               }
          });
     }
    
    <input type="button" onclick="requestJson()" value="请求json,输出是json"/>
    

    测试:

    package com.eurasia.controller;
    
    import com.eurasia.pojo.ItemsCustom;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    /**
     * Created by yvettee on 2017/12/11.
     */
    @Controller
    public class JsonTest {
        //请求json串(商品信息),输出json()
        @RequestMapping("/requestJson")
        //@RequestBody表示将请求的商品信息json串转成ItemsCustom对象
        //@ResponseBody表示将ItemsCustom对象转成json输出
        public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom) {
    
            return itemsCustom;
        }
    }
    

    结果:

    输入json串,输出是json串

    5.2 输入json串,输出是json串

    页面代码:

     //请求key/value,输出是json
            function responseJson() {
                $.ajax({
                    type: 'post',
                    url: '/responseJson.action',
                    //请求是key/value这里不需要指定contentType,因为默认key/value类型
                    data:'name=手机&price=999',
                    success: function (data) {//返回json结果
                        console.log(data);
                    }
                });
            }
    
    <input type="button" onclick="responseJson()" value="请求key/value,输出是json"/>
    

    测试:

     //请求key/value,输出json
        @RequestMapping("/responseJson")
        public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom){
    
            //@ResponseBody将itemsCustom转成json输出
            return itemsCustom;
        }
    

    结果:

    输入json串,输出是json串

    上篇:上传图片
    下篇:RESTful支持
    源代码:https://github.com/yvettee36/SpringMVC_mybatis

    相关文章

      网友评论

        本文标题:JSON数据交互

        本文链接:https://www.haomeiwen.com/subject/pilwixtx.html