Java遞迴的將JSON所有引數的key的首字母轉為大寫
阿新 • • 發佈:2019-02-13
問題由來:
這兩天對接其他部門的api介面時,發現一個引數檢查始終過不去,最後被告知這個引數的首字母必須為大寫,這就很噁心了!因為java object自動轉出來的json首字母都是小寫的!
解決方案:
網上有說用@JsonFiled @JSONProperties 註解可以解決的,但是我試了下沒有成功,而且每個引數都要加,很麻煩,還有些是內部類。
因為內部類較多,我就寫了一個遞迴的ObjectToJson轉化方法。
/**
*遞迴將子類也去除null值,key首字母大寫
* @param object
* @return
*/
private Object genChildParamMap(Object object) {
if (object instanceof String || object instanceof Number || object instanceof Boolean||object instanceof JSONArray) {
return object;
}else {
Map<String, Object> paramMap = (Map<String, Object>) JSONObject.toJSON(object);
Map<String, Object> newMap = Maps.newHashMapWithExpectedSize(paramMap.size());
paramMap.entrySet().stream().filter(me -> me.getValue() != null ).forEach(me ->
newMap.put(upperFirstCase(me.getKey()), genChildParamMap(me.getValue())));
return newMap;
}
}
目前使用狀況良好,沒發現啥坑。