结合从JSON加载两个地图块

时间:2019-07-16 18:22:36

标签: java

我有下面的代码,代码没有问题,只是我想知道是否有一种方法可以将try块组合成一个。

public void populateMap(Map data){

    String jsonData1 = readJSON("FILE_1_PATH");
    String jsonData2 = readJSON("FILE_2_PATH);

    if (StringUtils.isNotBlank(jsonData1)) {
        try{
            Map<String,String> dataMap = ObjectMapper.readValue(jsonData1,POJO.class);
            data.put("file1",dataMap);
        }catch(Exception e){
            //Handle exception
        }
    }

    if (StringUtils.isNotBlank(jsonData2)) {
        try{
            Map<String,String> dataMap = ObjectMapper.readValue(jsonData2,POJO.class);
            data.put("file2",dataMap);
        }catch(Exception e){
            //Handle exception
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您可以轻松地合并它们,并且也不需要Map变量,只需将它们的值内联到传递给data.put()的参数中:

public void populateMap(Map data){
  String jsonData1 = readJSON("FILE_1_PATH");
  String jsonData2 = readJSON("FILE_2_PATH);

   try{
        if (StringUtils.isNotBlank(jsonData1)) {
          data.put("file1", ObjectMapper.readValue(jsonData1,POJO.class));
        }  
        if (StringUtils.isNotBlank(jsonData2)) {
           data.put("file2",ObjectMapper.readValue(jsonData2,POJO.class));
        }  
   }catch(Exception e){
    //Handle exception
   }
}

请注意,Map参数是原始类型。优先使用通用类型。

答案 1 :(得分:0)

您可以从字面上将尝试的第二个主体移到第一个。

public void populateMap(Map data){

    String jsonData1 = readJSON("FILE_1_PATH");
    String jsonData2 = readJSON("FILE_2_PATH);

    try{
         if (StringUtils.isNotBlank(jsonData1)) {
            Map<String,String> dataMap = 
               ObjectMapper.readValue(jsonData1,POJO.class);
            data.put("file1",dataMap);
          }

           if (StringUtils.isNotBlank(jsonData2)) {
                Map<String,String> dataMap = 
                 ObjectMapper.readValue(jsonData2,POJO.class);
               data.put("file2",dataMap);
           }
       }catch(Exception e){
            //Handle exception
        }
    }

    }
}

提示:在Java 7及更高版本中,您可以在catch块中放置多个异常

    try { 
      // statement that could raise ExceptionTypeA  and/or ExceptionTypeB 
    } catch (ExceptionTypeA | ExceptionTypeB exception) {
      // statement to handle exception
    }