用一行代码过滤app接口的出参

开发人员都知道:json是一种轻量级的数据交换格式,主要用于传送数据,它的优点在于格式都是压缩的, 占用带宽小,所以后台提供给app端的接口是json格式的数据。但后台查询数据库拿到大量的数据,假如不做任何处理直接抛出,一来就会导致网络传输慢,接口负载大,二来app端人员要面对垃圾数据,加大了取数据的难度,这时我们后台开发人员就会去想一个提升性能又方便app端人员的办法,接下来我就介绍这个方法。该方法纯属个人借鉴前辈思路提炼加工。

Map<Object, Object> obj = (Map<Object, Object>) resultMap.get(ResultCodeConstant.OBJ);//service层返回给controller的结果集
Map<Object, Object> fileRuleMap = new HashMap<Object, Object>();//装要过滤的字段
fileRuleMap.put("id", "orderId");//key对应数据集的字段,而value是给app端的字段

一行代码:

filterResultMap = ExcuteUtil.filterFormResultMap(obj, fileRuleMap); //核心方法

核心方法代码:
/**
* 过滤给app出参字段
* @param data 源数据
* @param filterRuleMap 出参字段
* @return
*/
public static Map<Object, Object> filterFormResultMap(Map<Object, Object> data, Map<Object, Object> filterRuleMap) {
Map<Object, Object> filterMap = new HashMap<Object, Object>();

    //(1)先判断有没有要过滤的字段,没有的话返回源数据
    if (filterRuleMap != null && filterRuleMap.size() > 0) {
        if (data != null && data.size() > 0) {
            //(2)迭代集合取值
            Iterator<Object> it = data.keySet().iterator();
            while (it.hasNext()) {
                String key = StringUtil.trim(it.next());
                Object val = StringUtil.trim(data.get(key));
                if (filterRuleMap.containsKey(key)) {
                    filterMap.put(StringUtil.trim(filterRuleMap.get(key)), val);
                }
            }
        }
    } else {
        filterMap.putAll(data);
    }
    return filterMap;
}

最后将结果转成json格式以流的方式输出:

String rs = JSONObject.fromObject(filterResultMap ).toString();

结语:上述方法只是支持Map格式的转换,如果你觉得不错、有用,下一篇将会介绍list,还有List<Map<Object,Object>>。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,488评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,518评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,888评论 4 61
  • 我不断的问自己,我怎么会给让你说我神经的机会
    爱到最后成了神经阅读 218评论 0 0
  • 世界上的确没有如果,不过却有很多但是,我曾以为时间和距离可以冲断一切,无意中却成了一种逃避。生活瞬间就像被按了重复...
    众生迷离阅读 331评论 0 0

友情链接更多精彩内容