从HTTP request的body中拿到JSON并反序列化为一个对象
import com.google.gson.Gson;
import org.apache.struts2.ServletActionContext; import javax.servlet.ServletRequest;
import java.io.*; /**
* Created by sky.tian on 2015/1/12.
*/
public class Test { private static final int DEFAULT_BUFFER_SIZE = 1024 * 4; private static final Gson gson = new Gson(); public <T> T parseRequestBody(Class<T> type) throws IOException {
ServletRequest request = ServletActionContext.getRequest();
InputStream inputStream = request.getInputStream();
String json = getRequestBodyJson(inputStream);
return gson.fromJson(json, type);
} /**
* 得到HTTP请求body中的JSON字符串
* @param inputStream
* @return
* @throws IOException
*/
private String getRequestBodyJson(InputStream inputStream) throws IOException {
Reader input = new InputStreamReader(inputStream);
Writer output = new StringWriter();
char[] buffer = new char[DEFAULT_BUFFER_SIZE];
int n = 0;
while(-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
}
return output.toString();
} }
用户向一个Struts2 Action发送一个HTTP请求,比如URL是/user/create,方法是POST,用户的数据放在HTTP的RequestBody之中。
如何把HTTP body中的内容拿出来还原成Action所需的对象呢?以上代码就可以了。使用了GSON库。
从HTTP request的body中拿到JSON并反序列化为一个对象的更多相关文章
- 在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍
全局引用 using Newtonsoft.Json; using Newtonsoft.Json.Converters; //把Json字符串反序列化为对象 目标对象 = JavaScriptCon ...
- Asp.Net中使用Newtonsoft.Json转换,读取,写入
using Newtonsoft.Json;using Newtonsoft.Json.Converters; //把Json字符串反序列化为对象目标对象 = JsonConvert.Deserial ...
- EL表达式从request和session中取值
在Action中保存登录的基本信息:request.getSession().setAttribute("adminid", str); 在JSP页面中:${sessionScop ...
- spring mvc DispatcherServlet详解之三---request通过ModelAndView中获取View实例的过程
整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet第二步:通过request从Controller获取ModelAndView.现在来讲解第三步:reques ...
- Jmeter----A接口response中body的某一个参数传递给B接口request的body中使用(参数的传递)
示例:将接口"获取待办列表"response中body的id值传递给接口"删除待办"request的body中使用: 操作步骤如下: 第一步:给"获取 ...
- 微信小程序 request域名配置好之后,还是提示报错配置的域名不在request合法域名中
自己尝试着用nodejs搭个后台服务的时候,用了端口号,然后在小程序中使用的时候,报错说配置的域名不在request合法域名中 明明已经配置好了的啊,看着报错信息.仔细对比了一下两个url请求地址,发 ...
- request在作用域中管理属性
request在作用域中管理属性 制作人:全心全意 在作用域中管理属性 setAttribute(String name,Object object) name:表示变量名,为String类型,在转发 ...
- Python requests.post方法中data与json参数区别
在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json. data与json既可以是str类型,也可以是dict类型. 区别: 1.不管json是 ...
- 如何决解项目中hibernate中多对多关系中对象转换json死循环
先写一下原因吧!我是写的SSH项目,在项目中我遇到的问题是把分页对象(也就是pageBean对象)转化为json数据,下面为代码: public class PageBean <T>{// ...
随机推荐
- 第八周课程总结 & 实验报告(六)
第八周课程总结 一.包装类 介绍 装箱与拆箱 应用 二.异常 基本概念 基本格式 异常类的继承结构 throws关键字 throw关键字 Exception类和RuntimeException类 自定 ...
- 【python学习】字符串相关
# -*- coding: utf-8 -*- # ========================================================================== ...
- 机器学习模型解释工具-Lime
本篇文章转载于LIME:一种解释机器学习模型的方法 该文章介绍了一种模型对单个样本解释分类结果的方法,区别于对整体测试样本的评价指标准确率.召回率等,Lime为具体某个样本的分类结果做出解释,直观地表 ...
- C++二维数组名的再探索
#include <iostream> int main() { ][] = { , , , , , , , , , , , }; //输出 0,1,2,3,4,5,6,7,8,9,10, ...
- layui学习地址
--layui学习地址 ,相当之好用,非常感谢为我们工作和学习提供方便的才子们,谢谢~https://www.layui.com/demo/layim.html
- 十八:jinja2之include标签
用于将页面的某一块地方抽取出来,要嵌入内容的时候使用,继承的概念 把具体内容分别放到其他地方同一管理,要用的时候使用include继承 使用include的时候可以直接使用接收的数据
- 使用PowerShell远程连接WinServer
最近做一个项目后台,涉及到多台服务器,当程序更新的时候,由于用的是WinServer,无法像Linux使用SSH批量更新,用Windows的mstsc的远程一个一个连接又太麻烦了.查找了一下资料,发现 ...
- Eclipse_Package Presentation
Package Presentation ->Flat ->Hierarchical更常用
- oracle系统视图V$
--数据字典表select * from v$fixed_table;select * from v$fixed_view_definition;select * from dictionary; - ...
- c++ 引用 日期&时间
日期时间[点击进入看吧,没啥可后期拓展的] 引用 引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. 一.引用和指针的 ...