导航:首页 > 净水问答 > 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过滤相关的资料

热点内容
城市污水排放量预测 浏览:395
亚都防渗透纯水机怎么用 浏览:443
2018上海过滤与分离展览会 浏览:843
金王子空气滤芯底壳多少钱 浏览:725
水性污水怎么处理 浏览:388
泗洪市污水处理厂有哪些 浏览:213
ge反渗透膜型号tm 浏览:651
小米的空气净化器怎么拆 浏览:650
污水管道能否穿越隧道 浏览:29
50吨锰砂过滤器 浏览:146
热血传奇战神星王装备过滤 浏览:964
环氧树脂涂层标准 浏览:980
壳聚糖超滤膜图 浏览:199
airdog空气净化器怎么样 浏览:406
pe小型外置泵污水提升器多少钱 浏览:659
污水管道300波纹管施工多少一米 浏览:423
济南汇通沃顿反渗透膜 浏览:684
1kg环氧树脂漆可以刷多少平 浏览:581
海尔空气净化器型号怎么设置的 浏览:54
纯水精灵的那个鸟怎么打 浏览:227