2012-04-17 6 views
5

Mam serwer REST, który wysyła JSON w treści odpowiedzi. Niedawno zacząłem czytać o Apache Camel. Używam następujących po wysyłaniu żądań do mojej usługi REST.Apache Camel: Ukryj JSON na POJO używając metod wielbłądów

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

Teraz odpowiedź będzie JSON, czy jest jakiś sposób uzyskać ten JSON bezpośrednio do POJO korzystania niektóre metody przodzie to() (coś takiego)?

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

Wolałbym rozwiązanie inne niż na wiosnę.

Dzięki

Odpowiedz

1

Apache Camel zapewnia komponent do Marszałka i unmarshal POJO do i od JSON.

W twoim przypadku, byłoby:

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

Nawiasem mówiąc, może być konieczne skonfigurowanie biblioteki json, aby to zrobić, a ja proponuję wziąć obejrzenia the official configuration.

2

zawierać następujące dependency-

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

Definiowanie formatu JSON w RouteBuilder wykładowa

JacksonDataFormat jsonDataFormat = new JacksonDataFormat(Employee.class); 

Również w klasie routebuilder użyć powyższego dataFormat następująco -

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

Kod źródłowy i więcej szczegółów - Apache Camel - Marshalling/Unmarshalling XML/JSON Data