2017-09-04 81 views
1

我有一个奇怪的问题与杰克逊ObjectMapper。杰克逊ObjectMapper在尝试赶不上

我想要做的(请告诉我一个更好的方法,如果你想的话)是解析REST调用的结果。结果是String,我想用ObjectMapper解析它来填充POJO。但流量甚至不会进入try catch部分。下面是controller代码我使用:

@RequestMapping(value = "/data", method= RequestMethod.GET) 
    public String getData(Model model){ 

     RestTemplate restTemplate = new RestTemplate();  

     ResponseEntity<String> res = restTemplate.exchange("http://api.aelf.org/v1/informations/2017-09-20/romain", 
              HttpMethod.GET, 
              UserAgent.setUserAgentInHttpHeader(), String.class); 

     try{ 
      ObjectMapper mapper = new ObjectMapper(); 
      JsonNode root = mapper.readTree(res.getBody()); 
      JsonNode name = root.path("semaine"); 

      model.addAttribute("name", name.asText()); 

     }catch (Exception e){ 
      e.printStackTrace(); 
     }       
     return "myView"; 
    } 

当我调试,这是我看到的所有变量,包括res和JSON格式的REST调用的内容,但没有在该varialbles的正在发生的事情try存在。因此,该模型绝不会填充任何name数据。

+1

当你进入try语句时,这些变量将在范围内。在异常中放置一个断点,然后进入这个步骤,验证res.getBody()是否让您期望在手表中。并且映射器构造函数可以移出try,cstr不会失败 – Tim

+0

@Tim是Tim。我在'try'中放了一个break,在'catch'中放了'try' ...''root'就得到了我想要的。我认为我只是未能达到'name'的数据。'root'的JSON结构是'{“info”:{“semaine”:“data1”,“other_field”:“other_data”}} ... I要去看看它... – Bloomberg58

+0

@Tim。问题解决了......当你进入try语句时,这些变量将在范围内。在例外中划出一个断点,并进入这个'你已经帮我...谢谢 – Bloomberg58

回答

1

当你进入try语句时,这些变量将在范围内。继续进入尝试区域。

此外,在异常情况下设置中断点可能会有帮助,以防万一。

+0

请投票我的问题;-) – Bloomberg58