2017-09-04 2 views
1

J'ai un problème étrange avec Jackson ObjectMapper. Ce que j'essaie de faire (s'il vous plaît me conseiller une meilleure approche si vous voulez) est d'analyser le résultat d'un appel REST. Ce résultat est un String et je veux l'analyser avec ObjectMapper pour remplir un POJO. Mais le flux n'entre même pas dans la section try catch. Voici le code controller J'utilise:Jackson ObjectMapper inaccessible dans try catch

@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"; 
    } 

Ce qui se passe quand je déboguer ce que je vois toutes les variables, y compris res et le contenu de l'appel REST au format JSON, mais aucun des varialbles dans la try est présent. Par conséquent, le modèle n'est jamais rempli avec des données name.

+1

mettez un point d'arrêt dans l'exception, et entrez dans ceci, vérifiez que res.getBody() vous donne ce que vous attendez de la montre. et le constructeur du mappeur peut être déplacé hors de l'essai, le cstr n'échouera pas – Tim

+0

@ Tim Oui Tim. J'ai mis une pause dans 'try' et dans' catch' il s'est arrêté dans 'try' ...' root' a ce que je veux. Je pense que j'ai seulement échoué à atteindre les données pour 'name' .. La structure JSON de' root' est '{" info ": {" semaine ":" data1 "," autre_field ":" other_data "}} ... I Je vais regarder ... – Bloomberg58

+0

@Tim. Problème résolu ... 'quand vous entrez dans l'instruction try, ces vars seront dans la portée. mettre un point de rupture dans l'exception, et entrer dans ce 'vous m'avez aidé ... Merci – Bloomberg58

Répondre

1

Lorsque vous entrez dans l'instruction try, ces variables sont dans la portée. Continuez à marcher dans la zone d'essai. De plus, mettre un point d'arrêt sur l'exception peut être utile, au cas où il tomberait. Lorsque vous entrez dans l'instruction try, ces vars seront dans la portée de

+0

pls jusqu'à voter ma question ;-) – Bloomberg58