详解Springboot之接收json字符串的两种方式

 更新时间:2020年09月16日 08:33:32   作者:狂飙的yellowcong  
这篇文章主要介绍了Springboot之接收json字符串的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

第一种方式、通过关键字段@RequestBody,标明这个对象接收json字符串。还有第二种方式,直接通过request来获取流。在spring中,推荐使用。

代码地址

https://gitee.com/yellowcong/springboot-demo/tree/master/springboot-json

项目结构

其实项目里面没啥类容,就是一个控制器和pom.xml配置

这里写图片描述

配置fastjson

添加fastjson的依赖到pom.xml中

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>${fastjson.version}</version>
</dependency>

1、通过@RequestBody 接收json

直接通过@RequestBody 的方式,直接将json的数据注入到了JSONObject里面了。

/**
 * 创建日期:2018年4月6日<br/>
 * 代码创建:黄聪<br/>
 * 功能描述:通过request的方式来获取到json数据<br/>
 * @param jsonobject 这个是阿里的 fastjson对象
 * @return
 */
@ResponseBody
@RequestMapping(value = "/json/data", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
public String getByJSON(@RequestBody JSONObject jsonParam) {
  // 直接将json信息打印出来
  System.out.println(jsonParam.toJSONString());

  // 将获取的json数据封装一层,然后在给返回
  JSONObject result = new JSONObject();
  result.put("msg", "ok");
  result.put("method", "json");
  result.put("data", jsonParam);

  return result.toJSONString();
}

2、通过Request获取

通过request的对象来获取到输入流,然后将输入流的数据写入到字符串里面,最后转化为JSON对象。

/**
 * 创建日期:2018年4月6日<br/>
 * 代码创建:黄聪<br/>
 * 功能描述:通过HttpServletRequest 的方式来获取到json的数据<br/>
 * @param request
 * @return
 */
@ResponseBody
@RequestMapping(value = "/request/data", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
public String getByRequest(HttpServletRequest request) {

  //获取到JSONObject
  JSONObject jsonParam = this.getJSONParam(request);

  // 将获取的json数据封装一层,然后在给返回
  JSONObject result = new JSONObject();
  result.put("msg", "ok");
  result.put("method", "request");
  result.put("data", jsonParam);

  return result.toJSONString();
}

/**
 * 创建日期:2018年4月6日<br/>
 * 代码创建:黄聪<br/>
 * 功能描述:通过request来获取到json数据<br/>
 * @param request
 * @return
 */
public JSONObject getJSONParam(HttpServletRequest request){
  JSONObject jsonParam = null;
  try {
    // 获取输入流
    BufferedReader streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));

    // 写入数据到Stringbuilder
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = streamReader.readLine()) != null) {
      sb.append(line);
    }
    jsonParam = JSONObject.parseObject(sb.toString());
    // 直接将json信息打印出来
    System.out.println(jsonParam.toJSONString());
  } catch (Exception e) {
    e.printStackTrace();
  }
  return jsonParam;
}

3、测试

测试中,我访问了json和 request两个类,来获取反回的信息,可以卡懂啊,返回的 method字段不一样,我这么做是为了区分,我访问了两个方法,而不是一个方法,反回的Content-Typeapplication/json;charset=UTF-8

这里写图片描述

参考文章

https://www.cnblogs.com/yoyotl/p/7026566.html

到此这篇关于Springboot之接收json字符串的两种方式的文章就介绍到这了,更多相关Springboot之接收json字符串的两种方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java算法之桶排序Bucket Sort详解

    Java算法之桶排序Bucket Sort详解

    这篇文章主要介绍了Java算法之桶排序Bucket Sort详解,桶排序(Bucket Sort)又称箱排序,是一种比较常用的排序算法,其算法原理是将数组分到有限数量的桶里,再对每个桶分别排好序,最后一次将每个桶中排好序的数输出,需要的朋友可以参考下
    2023-10-10
  • 用java实现猜数字游戏

    用java实现猜数字游戏

    这篇文章主要为大家详细介绍了用java实现猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Eureka源码阅读之环境搭建及工程结构

    Eureka源码阅读之环境搭建及工程结构

    这篇文章主要为大家介绍了Eureka源码阅读之环境搭建的工程结构及调试需知详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2022-10-10
  • Java WebService技术详解

    Java WebService技术详解

    本文详细讲解了Java WebService技术工作原理以及调用方式。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • Springboot集成restTemplate过程详解

    Springboot集成restTemplate过程详解

    这篇文章主要介绍了Springboot集成restTemplate过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 手写redis@Cacheable注解 参数java对象作为key值详解

    手写redis@Cacheable注解 参数java对象作为key值详解

    这篇文章主要介绍了手写redis@Cacheable注解 参数java对象作为key值详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java定位死锁的三种方法(jstack、Arthas和Jvisualvm)

    java定位死锁的三种方法(jstack、Arthas和Jvisualvm)

    这篇文章主要给大家介绍了关于java定位死锁的三种方法,分别是通过jstack定位死锁信息、通过Arthas工具定位死锁以及通过 Jvisualvm 定位死锁,文中还介绍了死锁的预防方法,需要的朋友可以参考下
    2021-09-09
  • 利用Java生成带有文字的二维码

    利用Java生成带有文字的二维码

    二维码在我们现在的生活中可谓是随处可见,这篇文章主要是介绍如何利用Java生成带有文字的二维码,对大家学习Java具有一定的参考借鉴价值。有需要的朋友们下面来一起看看吧。
    2016-09-09
  • mybatis-plus查询方式,部分字段没有值

    mybatis-plus查询方式,部分字段没有值

    这篇文章主要介绍了mybatis-plus查询方式,部分字段没有值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Java获得当前时间前指定几个小时具体时间的方法示例

    Java获得当前时间前指定几个小时具体时间的方法示例

    这篇文章主要介绍了Java获得当前时间前指定几个小时具体时间的方法,涉及java使用Calendar针对日期时间的相关运算与转换操作技巧,需要的朋友可以参考下
    2017-08-08

最新评论