我有一个奇怪的问题与杰克逊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
数据。
当你进入try语句时,这些变量将在范围内。在异常中放置一个断点,然后进入这个步骤,验证res.getBody()是否让您期望在手表中。并且映射器构造函数可以移出try,cstr不会失败 – Tim
@Tim是Tim。我在'try'中放了一个break,在'catch'中放了'try' ...''root'就得到了我想要的。我认为我只是未能达到'name'的数据。'root'的JSON结构是'{“info”:{“semaine”:“data1”,“other_field”:“other_data”}} ... I要去看看它... – Bloomberg58
@Tim。问题解决了......当你进入try语句时,这些变量将在范围内。在例外中划出一个断点,并进入这个'你已经帮我...谢谢 – Bloomberg58