首页 > 代码库 > 从HTTP request的body中拿到JSON并反序列化为一个对象
从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并反序列化为一个对象
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。