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 paramMap = (Map) JSONObject.toJSON(object);
            Map 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;
        }
    }

目前使用状况良好,没发现啥坑。

你可能感兴趣的:(工具类)