2012-04-17 7 views
5

Ho un server REST che invia JSON nel corpo della risposta. Recentemente ho iniziato a leggere su Apache Camel. Io uso il seguente per inviare richieste al mio servizio REST.Apache Camel: JSON nascosto a un POJO usando i metodi cammello

from("direct:start").setHeader("token", simple("234da")) 
          .to("http://localhost:8088/foo/bar/?foo1=bar1"); 

Ora la risposta sarà un JSON, c'è qualche modo ottengo questo JSON direttamente in un POJO utilizzando un metodo in anticipo to() (qualcosa di simile)?

to("http://localhost:8088/foo/bar/?foo1=bar1").toPOJO(); 

Preferirei una soluzione non Spring.

Grazie

risposta

1

Apache Camel fornisce un componente di marshalling e unmarshalling POJO da e JSON.

Nel tuo caso, sarebbe:

from("direct:start").setHeader("token", simple("234da")) 
.to("http://localhost:8088/foo/bar/?foo1=bar1") 
.unmarshal().json(); 

A proposito, potrebbe essere necessario configurare la libreria JSON per farlo e vi consiglio di dare un'occhiata a the official configuration.

2

sono i seguenti dependency-

<dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-jackson</artifactId> 
     <version>2.14.1</version> 
    </dependency> 

Definire JSON Formato nel RouteBuilder classe-

JacksonDataFormat jsonDataFormat = new JacksonDataFormat(Employee.class); 

Anche nella classe routebuilder utilizzare la dataformat sopra come segue -

from("file:C:/inputFolder").doTry().unmarshal(xmlDataFormat). 
     process(new MyProcessor()).marshal(jsonDataFormat). 
     to("jms:queue:javainuse") 

Codice sorgente e ulteriori dettagli - Apache Camel - Marshalling/Unmarshalling XML/JSON Data

Problemi correlati