ASE-New/src/main/java/com/codesdream/ase/component/datamanager/JSONParameter.java

65 lines
1.9 KiB
Java
Raw Normal View History

2020-02-22 13:41:16 +00:00
package com.codesdream.ase.component.datamanager;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Optional;
2020-02-22 13:41:16 +00:00
/**
* 处理JSON相关数据
*/
@Component
public class JSONParameter {
// 处理Request Body
public String getRequestBody(HttpServletRequest request){
try {
return request.getParameter("json");
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
2020-02-22 13:41:16 +00:00
// 提取Request中的JSON数据
public Optional<JSONObject> getJSONByRequest(HttpServletRequest request){
2020-02-22 13:41:16 +00:00
try {
JSONObject jsonParam = null;
String content = getRequestBody(request);
jsonParam = JSONObject.parseObject(content);
return Optional.ofNullable(jsonParam);
2020-02-22 13:41:16 +00:00
} catch (Exception e) {
e.printStackTrace();
return Optional.empty();
2020-02-22 13:41:16 +00:00
}
2020-02-22 13:41:16 +00:00
}
2020-02-29 07:33:46 +00:00
// 根据JSON对象构造JSON字符串用于返回
2020-02-22 13:41:16 +00:00
public String getJSONString(JSONObject json){
return json.toJSONString();
}
// 根据Java对象构造JSON字符串用于返回
public String getJSONString(Object object){
return JSON.toJSONString(object);
}
2020-02-29 07:33:46 +00:00
// 由JSON对象获得对应的Java对象
public <T> T getJavaObject(JSONObject json, Class<T> type){
return json.toJavaObject(type);
}
// 由Request获得对应的Java对象(常用于Post请求中)
public <T> Optional<T> getJavaObjectByRequest(HttpServletRequest request, Class<T> type){
Optional<JSONObject> json = getJSONByRequest(request);
return json.map(jsonObject -> getJavaObject(jsonObject, type));
2020-02-29 07:33:46 +00:00
}
2020-02-22 13:41:16 +00:00
}