私はキャメル2.19.1から休憩コンポーネントとのトラブルを持って、私は私がしようとするときに/ {"hello":"world"}
Apacheのキャメル2.19 RESTコンポーネント - JSON本体内に二重引用符(getInプロセッサ)
のようなテストJSONを投稿しよう本文からJSONオブジェクトを取得すると、二重引用符なしで文字列を取得します{hello:world}
。
私のObjectMapperでは、私は二重引用符を持っていないので、エラー:com.fasterxml.jackson.core.JsonParseException: Unexpected character ('h' (code 104)): was expecting double-quote to start field name
があります。 プロセッサ内の本体からJSONオブジェクトを正しく取得するにはどうすればよいですか?
rest("/test")
.post("/send").description("Post test")
.to("direct:test");
from("direct:test").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
log.info("body: " + exchange.getIn().getBody(String.class));
String input = exchange.getIn().getBody(String.class);
try {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode actualObj = objectMapper.readTree(input);
log.info("Object: "+actualObj);
} catch (Exception e) {
exchange.setException(e);
}
}
}).end();
私を助けるためのおかげで、 よろしく
@UPDATE
最後にそれがうまく機能しています。
主な問題は、(私は私のCamelContextを設定CamelConfigurationファイルから)ServletConfigurationから来た:...
http://camel.apache.org/rest-dsl.html
おかげ
@Bean
CamelContextConfiguration contextConfiguration() {
return new CamelContextConfiguration() {
@Override
public void beforeApplicationStart(CamelContext context) {
context.getRestConfiguration().setBindingMode(RestConfiguration.RestBindingMode.off);
context.getRestConfiguration().setComponent("servlet");
}
@Override
public void afterApplicationStart(CamelContext camelContext) {
}
};
}
RestConfiguration.RestBindingMode
は、json
たoff
でそれがうまく機能しています
有効なjsonを送信してもよろしいですか?私は前にこの問題を見ていない。 –
解決策(私には奇妙に思われる)が見つかりましたが、データをサービスに送信した方法を聞かせてもらえますか?ビールカール? Camelが自動的に特定のPOJOオブジェクト( '.outType(ListResponse.class)')に要求をマーシャリングするようにしたい場合に 'bindingMode(RestBindingMode.json)'が使われますが、 '.unmarshal ).json(JsonLibrary.Jackson、JSONPayload.class) 'このクラスは、@JsonIgnoreProperties(ignoreUnknown = true)や@JsonInclude(JsonInclude.Include.NON_NULL)のような追加のJackson注釈を持つことができる単純なPOJOクラスです –