从HTTP request的body中拿到JSON并反序列化为一个对象
2024-09-05 17:16:28
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库。
最新文章
- 【记录】ASP.NET MVC RegisterBundles
- C/C++编程语言学习资料尽收眼底 电子书+视频教程
- 2.1 python使用MongoDB 示例代码
- OpenLayers2.13.1知识整理
- vue学习笔记
- grep命令学习
- linux下vi命令修改文件及保存的使用方法
- 解读jQuery中extend函数
- ReactNative ScrollView或ListView头部莫名其妙多了20px
- uC/OS-II应用程序代码
- JAVA环境安装
- 可否控制<;link type=text/css rel=stylesheet href=style.css>;
- sql server 各种函数
- 【转】ubuntu下putty的复制粘贴 -- 不错
- Windows Auzre 微软的云计算产品的后台操作界面
- Linux 启动过程的详细解释
- 使用cordova开发app
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十八):增加排行榜功能
- Vue 2.0 路由全局守卫
- 基于Spring Boot框架开发的一个Mock