从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库。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。