1. 程式人生 > >Java遞迴的將JSON所有引數的key的首字母轉為大寫

Java遞迴的將JSON所有引數的key的首字母轉為大寫

問題由來:

這兩天對接其他部門的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; } }

目前使用狀況良好,沒發現啥坑。