Spring接收和响应json数据

一、前言

  关于什么是json以及基本使用技巧,为什么使用json等等,这里不再重复,直接进入主题

注:服务端接收json数据还原为java对象,称为反序列化,反之,将java对象作为响应转换为json数据发回给客户端,称为序列化

二、导入json相关框架的依赖(比如jackson)

  如果使用的是spring boot框架,导入spring boot相关依赖后,就存在相关依赖,无需重复,否则会报错;

    如果使用的是spring MVC框架,就需要手动导入相关依赖(比如Jackson),直接上代码,添加到pom文件中

<!-- jackson依赖 -->
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.7.0</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.7.0</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
          <version>2.7.0</version>
      </dependency>

二、响应json数据

  在spring框架中,controller方法正常写,如果需要响应json,增加@ResponseBody注解,表示当前return为数据不是视图,如果当前controller层都需添加@ResponseBody,则可以在类名前添加@RestController 注解(@ResponseBody和@Controller合体)

三、在接受json对应的输入参数前,加上@RequestBody注解

  此处需注意,别把@RequestBody和@ResponseBody放错地方,观察源代码可知,@RequestBody只能添加在参数前,而@ResponseBody添加在类和方法前

四、测试代码

import com.jeat.clinic.controller.OVmodel.BookType;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * @author
 * @class JsonTest
 * @Abstract
 * @date 2019/02/19
 */
@RestController
public class JsonTest {
    /**
     * 以实体类接收
     * @param bookType
     * @param request
     * @return
     * {"id":12,"typeName":"类型1"}
     */
    @RequestMapping(value="acceptJsonByEntity",method = RequestMethod.POST)
    public BookType acceptJsonByEntity(@RequestBody BookType bookType, HttpServletRequest request){
        System.out.println("当前http请求方式为:"+request.getMethod());

        System.out.println(bookType);
        return bookType;
    }

    /**
     * 以map方式接收
     * @param paramsMap
     * @param request
     * @return
     */
    @RequestMapping(value="acceptJsonByMap")
    public Map<String,Object> acceptJsonByMap(@RequestBody Map<String,Object> paramsMap, HttpServletRequest request){
        System.out.println("当前http请求方式为:"+request.getMethod());

        System.out.println(paramsMap);
        return paramsMap;
    }

    /**
     * 以list方式接收(以json数组形式传递)
     * @param bookTypeList
     * @param request
     * @return
     */
    @RequestMapping(value="acceptJsonByList")
    public List<BookType> acceptJsonByList(@RequestBody List<BookType> bookTypeList, HttpServletRequest request){
        System.out.println("当前http请求方式为:"+request.getMethod());

        System.out.println(bookTypeList);
        return bookTypeList;
    }

    /**
     * 以单独属性形式接收
     * @param id
     * @param name
     * @return
     */
    @RequestMapping("acceptJsonBySingleParam")
    public MultiValueMap acceptJsonByRequestParam(@RequestBody MultiValueMap params
                                          /* @RequestBody int userId,
                                           @RequestBody String userName*/
    ) {

        System.out.println(params.get("userId")+","+params.get("userName"));
        return params;
    }
}

五、测试

  测试我们采用火狐浏览器插件RESTClient,不会的找度娘

1、传输实体(类)

响应结果:

客户端结果:

2、以map方式接收

响应结果:

客户端结果:

3、以list方式接收(以json数组形式传递)

响应结果:

客户端结果:

附:RESTClient添加头字段操作:

原文地址:https://www.cnblogs.com/jeat/p/10400218.html

时间: 2024-11-24 06:30:37

Spring接收和响应json数据的相关文章

Spring使用fastjson处理json数据

1.搭建SpringMVC+spring环境 2.配置web.xml以及springmvc-config.xml,web.xml同Spring使用jackson处理json数据一样,Springmvc-config.xml有些许差别.Spring默认配置使用Jackson,如果要使用fastjson则需要配置HttpMessageConverter. <?xml version="1.0" encoding="UTF-8"?> <beans xml

jQuery提交Json数据到Webservice,并接收返回的Json数据

jQuery ajax webservice:get 和 post 一.GET 方式 客户端 复制代码 代码如下: var data = { classCode: "0001"}; // 这里要直接使用JOSN对象 $.ajax({ type: "GET", contentType: "application/json; charset=utf-8", url: "/WebServices/ProductPropertyWebServi

Struts2 Action接收POST请求JSON数据及其实现解析

一.认识JSON JSON是一种轻量级.基于文本.与语言无关的数据交换格式,可以用文本格式的形式来存储或表示结构化的数据. 二.POST请求与Content-Type: application/json 常用的HTTP请求方法有GET, POST, PUT, DELETE等.在提交POST请求时,请求数据放在消息体(Body)中,请求数据的格式及编码方式用Content-Type来指定.如我们常用的表单<form>提交,其Content-Type默认为application/x-www-for

SpringMVC从Control中响应json数据

在页面上异步获取Controller中响应的json数据. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR

关于ThinkPHP3.2框架接收不到json数据的解决办法

原因分析: 在tp框架中,我们经常使用的 I 方法是加过验证和默认的函数过滤的.所以我们接收的值当我们json_decode的时候就会出现空的字段 那么我们是不是又会像网上说的不用 I  方法用 $_POST这样的方法接到所谓的json数据以后再用json_decode这样的方法呢? 很显然,这个方法也是卡在了$_POST那里,有时候连值的影子都没有 所以,我们试着用环境变量来解决: 解释一下:这样接到的是一个对象,所以我加了一个(array)把对象转成了数组,这样才可以正确使用!!!也可以试试

Spring MVC如何进行JSON数据的传输与接受

本篇文章写给刚接触SpingMVC的同道中人,虽然笔者本身水平也不高,但聊胜于无吧,希望可以给某些人带来帮助 笔者同时再次说明,运行本例时,需注意一些配置文件和网页脚本的路径,因为笔者的文件路径与读者的未必相同 首先准备以下 jar包:commons-logging-1.1.3.jarjackson-core-asl-1.9.2.jarjackson-mapper-asl-1.9.2.jarspring-aop-4.0.6.RELEASE.jarspring-beans-4.0.6.RELEAS

用springmvc的@RequestBody和@ResponseBody 接收和响应json格式数据

1.controller @Controller @RequestMapping("/rest/v1") public class WelcomeController { @RequestMapping(value="/date/json/next", method=RequestMethod.POST,consumes="application/json" ,produces="application/json") @Res

Spring MVC中返回JSON数据的几种方式

我们都知道Spring MVC 的Controller方法中默认可以返回ModeAndView 和String 类型,返回的这两种类型数据是被DispatcherServlet拿来给到视图解析器进行继续处理返回页面的,而不是直接返回给客户端的.有时候我们需要发请求后让服务端直接返回一些数据,不再经过DispatcherServlet,这个时候通常有两种方式: 1.使用@ResponseBody注解 该注解的作用是把方法返回结果转成json或xml格式并进行返回,不管要返回什么类型的数据,是Str

响应json数据之发送ajax的请求

一.前端异步请求代码: <span style="font-size:14px;">$.ajax ({ type: "POST", //请求的方式 url: "outputservlet3", //请求url data: {}, //前端向后端传送的数据 dataType: "json", //数据格式json error: function () //请求错误的回调函数 { }, success: functio