導航:首頁 > 凈水問答 > objectmapper過濾

objectmapper過濾

發布時間:2022-04-10 01:04:09

① json 中如何使用@JsonIgnore

json 中使用@方法如下。

② 如何獲取HttpServletResponse裡面的內容

如何獲取HttpServletResponse裡面的內容
背景:在SPRING 框架之中, 有一個服務端需要提供多種形態的服務,這里的多種形態只是返回值得展示形式(其實 數據內在邏輯完全一樣), 比如:
形式1: JSONP({「key1」: value1, "key2":value2, "key3":value3, ....})
形式2: {「key1」: value1, "key2":value2, "key3":value3, ....}

為了使得後台業務處理代碼一樣(不做任何區分),現在理由過濾器,對返回介面進行處理,根據需要加上 :JSONP(...)

主要實現步驟如下:

1. 在web.xml 中配置過濾器
<filter>
<filter-name>RewriteResponse</filter-name>
<filter-class>com.robin.filter.RewriteResponse</filter-class>
</filter>

<filter-mapping>
<filter-name>RewriteResponse</filter-name>
<servlet-name>/*</servlet-name>
</filter-mapping>
// 斜杠星代表匹配任何請求

2. 重點在於RewriteResponse 過濾器

public class RewriteResponseFilter extends Filter {
public String description() {
// TODO Auto-generated method stub
return null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException {
// TODO Auto-generated method stub

ResponseWrapper responseWrapper = new ResponseWrapper((HttpServletResponse) response);
try {
chain.doFilter(request, responseWrapper);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String responseContent = new String(responseWrapper.getDataStream());
RestResponse fullResponse = new RestResponse(205, "OK-MESSAGE",responseContent);
byte[] responseToSend = restResponseBytes(fullResponse);
response.getOutputStream().write(responseToSend);
}

private byte[] restResponseBytes(RestResponse response) throws IOException {
String serialized = new ObjectMapper().writeValueAsString(response);
return serialized.getBytes("UTF-8");
}
}

3. 通用業務類(用於返回)
public class RestResponse implements Serializable {
private int status;
private String message;

private Object data;
public RestResponse(int status, String message, Object data) {
this.status = status;
this.message = message;
this.data = data;
}

public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}

}

4. 實現ServletOutputStream 指定的擴展
public class FilterServletOutputStream extends ServletOutputStream {

DataOutputStream output;
public FilterServletOutputStream(OutputStream output) {
this.output = new DataOutputStream(output);
}

@Override
public void write(int arg0) throws IOException {
output.write(arg0);
}

@Override
public void write(byte[] arg0, int arg1, int arg2) throws IOException {
output.write(arg0, arg1, arg2);
}

@Override
public void write(byte[] arg0) throws IOException {
output.write(arg0);
}
}

5. 替換原來的輸出
public class ResponseWrapper extends HttpServletResponseWrapper {

ByteArrayOutputStream output;
FilterServletOutputStream filterOutput;
HttpResponseStatus status = HttpResponseStatus.OK;

public ResponseWrapper(HttpServletResponse response) {
super(response);
output = new ByteArrayOutputStream();
}

@Override
public ServletOutputStream getOutputStream() throws IOException {
if (filterOutput == null) {
filterOutput = new FilterServletOutputStream(output);
}
return filterOutput;
}

public byte[] getDataStream() {
return output.toByteArray();
}
}

③ springMVC,json視圖,返回的json數據有null值,怎麼過濾成空串

自己構建ObjectMapper注入進去,在ObjectMapper中設置NOT_NULL不轉換回
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
答 <property name="" value="true" />
<property name="objectMapper">
<bean class="org.codehaus.jackson.map.ObjectMapper">
<property name="serializationInclusion">
<value type="org.codehaus.jackson.map.annotate.JsonSerialize$Inclusion">NON_NULL</value>
</property>
</bean>
</property>
</bean>

閱讀全文

與objectmapper過濾相關的資料

熱點內容
佛山豹王濾芯製造有限公司怎麼樣 瀏覽:857
廚房用污水提升泵 瀏覽:108
化工廠污水裡都是什麼蟲子圖片 瀏覽:179
離子交換再生廢水 瀏覽:275
工業污水中總鐵標準是多少 瀏覽:845
發達國家城市污水怎麼處理 瀏覽:239
史密斯凈水機為什麼不出水了 瀏覽:759
反滲透膜半年 瀏覽:962
克魯茲機油濾芯多少錢 瀏覽:310
凈水機用什麼反滲透膜 瀏覽:348
樹脂固化劑存放 瀏覽:147
廢水中的氯化汞如何采樣 瀏覽:749
小米空氣凈化器怎麼設置轉速 瀏覽:938
突發事故廢水超標排放如何處罰 瀏覽:601
低空排放油煙凈化器怎麼清洗 瀏覽:469
松下空氣凈化器過濾網怎麼安裝的 瀏覽:180
柴油油濾芯怎麼區分上下 瀏覽:882
常溫自干型有機硅樹脂價格 瀏覽:365
凈水機怎麼看管 瀏覽:972
濕巾ro純水是什麼作用 瀏覽:423