美文网首页
后台返回Object/Map类型,前端接收到的类型也会不同

后台返回Object/Map类型,前端接收到的类型也会不同

作者: 墨色尘埃 | 来源:发表于2018-06-24 15:47 被阅读479次

    1、后台返回类型是Object,前端android接收到的也是Object


    image.png

    后台接口

    /**
         * 获取所有的图层信息
         */
        @RequestMapping(value = "/selectLayerList", method = RequestMethod.GET)
        public ResponseObj<LayerInfoConfig> selectLayerList(@RequestParam String userId) {
    //    public ResponseObj<Map<String, List>> selectLayerList(@RequestParam String userId) {
            try {
                /**获取部门名称*/
                List<LinkedHashMap<String, Object>> userInfoMap = layerMapper.superManagerSelect("SELECT * FROM t_user " +
                        "where userId = '" + userId + "'");
                String department = String.valueOf(userInfoMap.get(0).get("department"));
                List<LayerConfig> layerList = layerMapper.selectLayerList(userId, department);
    
                /**构造图层字段配置信息字典*/
                List<LayerFieldInfo> allLayerFieldInfo = layerMapper.getAllLayerFieldInfo();
                Map<String, List<LayerFieldInfo>> layerFieldInfoMap = new HashMap<>();
                for (LayerFieldInfo layerFieldInfo : allLayerFieldInfo) {
                    if (!layerFieldInfoMap.containsKey(layerFieldInfo.getLayerId())) {
                        layerFieldInfoMap.put(layerFieldInfo.getLayerId(), new ArrayList<LayerFieldInfo>());
                    }
                    layerFieldInfoMap.get(layerFieldInfo.getLayerId()).add(layerFieldInfo);
                }
    
                /***将图层字段信息列表放入各图层中*/
                for (LayerConfig layerConfig : layerList) {
                    if (layerFieldInfoMap.containsKey(layerConfig.getLayerId())) {
                        layerConfig.setFieldInfoList(layerFieldInfoMap.get(layerConfig.getLayerId()));
                    }
                }
    
                List<DicType> dic = layerMapper.getDic();
    
                /**返回Map类型**/
                Map<String, List> map = new HashMap<>();
                map.put("layerList", layerList);
                map.put("dicType", dic);
    
                /**返回Object类型**/
                LayerInfoConfig layerInfoConfig = new LayerInfoConfig();
                layerInfoConfig.setLayerList(layerList);
                layerInfoConfig.setDicType(dic);
    
                return new ResponseObj<>(layerInfoConfig, null);
            } catch (Exception e) {
                e.printStackTrace();
                return new ResponseObj<>(null, new Error(-1, "服务器请求异常"));
            }
    
        }
    

    前端

        /**
         * 获取图层
         *
         * @return
         */
        @GET("layer/selectLayerList")
        Observable<ResponseObj<LayerInfoConfig>> getLayerInfo(@Query("userId") String userId);
    
        /**
         * 从服务器获取图层信息列表
         */
        public void GetLayerInfoFromServer() {
            ApiManager.getInstance()
                    .pointApiService()
                    .getLayerInfo(LoginManager.getUserId())
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(listResponseObj -> {
                        layerConfigList = listResponseObj.data.getLayerList();
                        Log.e("LayerConfig", "图层获取成功:" + layerConfigList.size() + " ");
                        UpdateLayerConfigInfo(layerConfigList);
                    }, throwable -> {
                        Toast.makeText(IApplication.mInstance, throwable.getMessage(), Toast.LENGTH_LONG);
                        Log.e("LayerConfig", "图层未获取成功");
                    });
        }
    

    2、后台返回类型是Map,前端android接收到的也是LinkedTreeMap


    image.png

    后台

        /**
         * 获取所有的图层信息
         */
        @RequestMapping(value = "/selectLayerList", method = RequestMethod.GET)
    //    public ResponseObj<LayerInfoConfig> selectLayerList(@RequestParam String userId) {
        public ResponseObj<Map<String, List>> selectLayerList(@RequestParam String userId) {
            try {
                /**获取部门名称*/
                List<LinkedHashMap<String, Object>> userInfoMap = layerMapper.superManagerSelect("SELECT * FROM t_user " +
                        "where userId = '" + userId + "'");
                String department = String.valueOf(userInfoMap.get(0).get("department"));
                List<LayerConfig> layerList = layerMapper.selectLayerList(userId, department);
    
                /**构造图层字段配置信息字典*/
                List<LayerFieldInfo> allLayerFieldInfo = layerMapper.getAllLayerFieldInfo();
                Map<String, List<LayerFieldInfo>> layerFieldInfoMap = new HashMap<>();
                for (LayerFieldInfo layerFieldInfo : allLayerFieldInfo) {
                    if (!layerFieldInfoMap.containsKey(layerFieldInfo.getLayerId())) {
                        layerFieldInfoMap.put(layerFieldInfo.getLayerId(), new ArrayList<LayerFieldInfo>());
                    }
                    layerFieldInfoMap.get(layerFieldInfo.getLayerId()).add(layerFieldInfo);
                }
    
                /***将图层字段信息列表放入各图层中*/
                for (LayerConfig layerConfig : layerList) {
                    if (layerFieldInfoMap.containsKey(layerConfig.getLayerId())) {
                        layerConfig.setFieldInfoList(layerFieldInfoMap.get(layerConfig.getLayerId()));
                    }
                }
    
                List<DicType> dic = layerMapper.getDic();
    
                /**返回Map类型**/
                Map<String, List> map = new HashMap<>();
                map.put("layerList", layerList);
                map.put("dicType", dic);
    
                /**返回Object类型**/
                LayerInfoConfig layerInfoConfig = new LayerInfoConfig();
                layerInfoConfig.setLayerList(layerList);
                layerInfoConfig.setDicType(dic);
    
                return new ResponseObj<>(map, null);
    //            return new ResponseObj<>(layerInfoConfig, null);
            } catch (Exception e) {
                e.printStackTrace();
                return new ResponseObj<>(null, new Error(-1, "服务器请求异常"));
            }
    
        }
    

    前端

        /**
         * 获取图层
         *
         * @return
         */
        @GET("layer/selectLayerList")
        Observable<ResponseObj<Map<String, List>>> getLayerInfo(@Query("userId") String userId);
    
        /**
         * 从服务器获取图层信息列表
         */
        public void GetLayerInfoFromServer() {
            ApiManager.getInstance()
                    .pointApiService()
                    .getLayerInfo(LoginManager.getUserId())
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(listResponseObj -> {
    //                    layerConfigList = listResponseObj.data.getLayerList();
                        layerConfigList = listResponseObj.data.get("layerList");
                        Log.e("LayerConfig", "图层获取成功:" + layerConfigList.size() + " ");
                        UpdateLayerConfigInfo(layerConfigList);
                    }, throwable -> {
                        Toast.makeText(IApplication.mInstance, throwable.getMessage(), Toast.LENGTH_LONG);
                        Log.e("LayerConfig", "图层未获取成功");
                    });
        }
    

    后台:E:\IDEAProject\ideasrfaserver,LayerController类P51行
    前端:E:\ASProject\newapp,LayerStore类P249行GetLayerInfoFromServer()方法

    相关文章

      网友评论

          本文标题:后台返回Object/Map类型,前端接收到的类型也会不同

          本文链接:https://www.haomeiwen.com/subject/ikhkyftx.html