您现在的位置是:主页 > news > nginx怎么做多个网站/软文大全800字
nginx怎么做多个网站/软文大全800字
admin2025/5/2 14:05:43【news】
简介nginx怎么做多个网站,软文大全800字,网页设计 收费,游戏网站策划说实话这个问题真的让我头疼,最终想到一个投机取巧的方法,下面且听我一一道来。 背景 因为mobile团队为了节省流量,所以架构组就把一些值为null或者""的字段给过滤掉了。 至于是怎么过滤掉值为null或者""的字段的方法如…
nginx怎么做多个网站,软文大全800字,网页设计 收费,游戏网站策划说实话这个问题真的让我头疼,最终想到一个投机取巧的方法,下面且听我一一道来。
背景
因为mobile团队为了节省流量,所以架构组就把一些值为null或者""的字段给过滤掉了。 至于是怎么过滤掉值为null或者""的字段的方法如…
说实话这个问题真的让我头疼,最终想到一个投机取巧的方法,下面且听我一一道来。
背景
因为mobile团队为了节省流量,所以架构组就把一些值为null
或者""
的字段给过滤掉了。
至于是怎么过滤掉值为null
或者""
的字段的方法如下。在application-local.yml
里面加入如下全局配置
jackson:default-property-inclusion: non_null
其实人家的这个要求也很合理,但是web团队有些数据是否展示的逻辑是根据API是否返回该字段来控制的,如果不返回字段就不显示了,所以就出问题了。
解决方法
- 方案1:首先想到的是在类上加上
@JsonInclude
,但是这个注解并不能解决我的问题。因为有些代码不是用的class,值为null
或者""
的字段依旧会被过滤掉,比如下面的。@JsonInclude
这个注解对Map,List这种数据结构不起作用。
HashMap<String, Object> map = new HashMap<>();map.put("totalWeight", order.getTotalWeight());map.put("source", orderSoldTo.getFromRefType());map.put("shipToPhone", orderSoldTo.getShipToPhone());map.put("dropShip", order.getDropShip());map.put("queued", order.getIssueDate());map.put("creditRelDate", order.getCreditRelDate());
- 方案2:手写一个
JasonIncludeHashMap
,思路主要是重写put,get,containsKey
方法,然后结合@JsonInclude(value = JsonInclude.Include.CUSTOM)
注解,定义一个Filter。
@JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = JsonIncldeValueFilter.class, contentFilter = JsonIncldeValueFilter.class)
public class JasonIncludeHashMap {private HashMap<String,Object> jasonIncludeHashMap=new HashMap<String,Object>();public void put(String key,Object value){jasonIncludeHashMap.put(key,value);}private boolean containsKey(String key){return jasonIncludeHashMap.containsKey(key);}private Object get(String key){return containsKey(key) ? jasonIncludeHashMap.get(key) : Integer.MIN_VALUE;}public Object getTotalWeight(){return get("totalWeight");}public Object getSource(){return get("source");}public Object getShipToPhone(){return get("shipToPhone");}public Object getDropShip(){return get("dropShip");}public Object getQueued(){return get("queued");}public Object getSalesReleased(){return get("salesReleased");}
}class JsonIncldeValueFilter{@Overridepublic boolean equals(Object obj) {return (obj instanceof Integer) && ((Integer) obj == Integer.MIN_VALUE);}
}
然后将HashMap
替换成JasonIncludeHashMap
,就可以实现当值为null
或""
的时候,字段不会被过滤掉,可以正常返回。
测试结果
"jasonIncludeHashMap": {"totalWeight": 0,"source": "","shipToPhone": 0,"dropShip": null,"queued": " ","creditRelDate": null}
吐槽
以后写代码真的要用class,尽量的避免HashMap这种手动拼接的行为,真实让人头疼。