2017-09-04 4 views
1

Ich habe ein seltsames Problem mit Jackson ObjectMapper.Jackson ObjectMapper unerreichbar in Versuch fangen

Was ich versuche (bitte geben Sie mir einen besseren Ansatz, wenn Sie wollen) ist das Ergebnis eines REST-Aufrufs analysieren. Dieses Ergebnis ist ein String und ich möchte es mit ObjectMapper analysieren, um ein POJO zu füllen. Aber der Fluss tritt nicht einmal in den Bereich try catch. Unten ist der controller Code Ich verwende:

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

Was geschieht, wenn ich debuggen ist, dass ich alle Variablen zu sehen, einschließlich res und den Inhalt des REST Aufruf im JSON-Format, aber keiner der varialbles in der try ist vorhanden. Folglich wird das Modell nie mit Daten name bestückt.

+1

Wenn Sie in die try-Anweisung eintreten, werden diese vars im Bereich sein. Setzen Sie einen Breakpoint in die Exception und stellen Sie sicher, dass res.getBody() Ihnen die gewünschte Uhrzeit in der Watch anzeigt. und der Mapper-Konstruktor kann aus dem Versuch entfernt werden, der cstr wird nicht fehlschlagen – Tim

+0

@Tim Ja Tim. Ich habe eine Pause in "try" gemacht und in "catch" hat es in "try" aufgehört ... "root" hat bekommen was ich will. Ich glaube, ich habe nur die Daten für 'name' nicht erreicht. Die JSON-Struktur von' root' ist '{" info ": {" semaine ":" data1 "," other_field ":" other_data "}} ... I werde es mir ansehen ... – Bloomberg58

+0

@Tim. Problem gelöst ... 'Wenn Sie in die try-Anweisung einsteigen, werden diese Variablen im Umfang sein. Setzen Sie einen Unterbrechungspunkt in die Ausnahme und treten Sie in dieses ein "Sie haben mir geholfen ... Danke – Bloomberg58

Antwort

1

Wenn Sie sich in die try-Anweisung begeben, sind diese vars im Gültigkeitsbereich. Gehe weiter in den Testbereich.

Auch das Setzen eines Breakpoints auf die Exception kann hilfreich sein, falls es durchfällt.

+0

pls up vote meine Frage ;-) – Bloomberg58

Verwandte Themen