说明
需要依赖 jackson、hutool 库
- 可以将
request.getParameter()中的数据取出,封装到 javabean中 - 可以将前端发送的
json格式数据,读取出来,封装到 javabean 中、map中
代码
package com.zrgj.epidemic.util;
import cn.hutool.core.bean.BeanUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class RequestUtils {
public static void parseParam(HttpServletRequest req, Object obj){
Map<String,String[]> map = req.getParameterMap();
Map paraMap = new HashMap();
parseParam(map,paraMap);
BeanUtil.fillBeanWithMap(paraMap,obj , false);
}
// 会有bug,只处理一个值,类似爱好这种,暂不处理
private static void parseParam(Map<String,String[]> srcMap , Map<String,String> destMap){
// 遍历 map 中的所有 key value
Set<Map.Entry<String, String[]>> entries = srcMap.entrySet();
for(Map.Entry<String, String[]> entry : entries){
String key = entry.getKey();
String[] valueArr = entry.getValue();
String value = null;
// 只处理一个值,类似爱好这种,暂不处理
if(valueArr!=null && valueArr.length == 1){
value = valueArr[0];
}
destMap.put(key,value);
}
}
public static <T> T parseJson(HttpServletRequest req, Class<T> clazz) throws Exception{
String jsonStr = getJsonString(req);
// 将json格式的字符串,转换成java对象
// 注意:json字符串中的属性名,要与类中的属性名一致,才能将值传入
ObjectMapper mapper = new ObjectMapper();
T res = mapper.readValue(jsonStr, clazz);
return res;
}
public static Map<String,String> parseJson(HttpServletRequest req) throws Exception{
String jsonStr = getJsonString(req);
ObjectMapper mapper = new ObjectMapper();
Map res = mapper.readValue(jsonStr, Map.class);
return res;
}
public static String getJsonString(HttpServletRequest req) throws Exception{
StringBuilder sb = new StringBuilder();
BufferedReader reader = req.getReader();
char[]buff = new char[1024];
int len;
while((len = reader.read(buff)) != -1) {
sb.append(buff,0, len);
}
String jsonStr = sb.toString();
return jsonStr;
}
}