我尝试将一个简单的JSON文件转换为Apache Camel中的POJO,但无法使其工作。
Routes.java
package org.acme.bindy.ftp;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.model.dataformat.BindyType;
import org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy;
import org.apache.camel.model.dataformat.JsonLibrary;
import org.apache.camel.model.dataformat.JsonDataFormat;
import org.apache.camel.Processor;
public class Routes extends RouteBuilder {
@Override
public void configure() throws Exception {
from("file:{{json.temp}}?delay=1000")
.unmarshal().json(JsonLibrary.Jackson, WeatherForecast[].class)
.to("file:{{json.processed}}");
....
....
}
}
WeatherForecast.java
package org.acme.bindy.ftp;
import java.util.Objects;
import io.quarkus.runtime.annotations.RegisterForReflection;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonSetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class WeatherForecast {
@JsonProperty("date")
private String date;
@JsonProperty("temperatureC")
private int temperatureC;
@JsonProperty("temperatureF")
private int temperatureF;
@JsonProperty("summary")
private String summary;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public int getTemperatureC() {
return temperatureC;
}
public void setTemperatureC(int temperatureC) {
this.temperatureC = temperatureC;
}
public int getTemperatureF() {
return temperatureF;
}
public void setTemperatureF(int temperatureF) {
this.temperatureF = temperatureF;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
}
天气预报-json
[{"date":"2022-05-07T13:49:22.0517663+02:00","temperatureC":36,"temperatureF":96,"summary":"Mild"},{"date":"2022-05-08T13:49:22.052558+02:00","temperatureC":21,"temperatureF":69,"summary":"Mild"},{"date":"2022-05-09T13:49:22.0525661+02:00","temperatureC":13,"temperatureF":55,"summary":"Hot"},{"date":"2022-05-10T13:49:22.0525665+02:00","temperatureC":-2,"temperatureF":29,"summary":"Warm"},{"date":"2022-05-11T13:49:22.0525668+02:00","temperatureC":49,"temperatureF":120,"summary":"Scorching"}]
**我收到的错误是:**没有可用类型的正文:输入流,但具有类型:天气预报[],网址:weather.json.引起原因:没有类型转换器可用于从类型转换:[]转换为所需类型:交换[]。导致原因:[org.apache.camel.NoTypeConversionAvailableException -没有类型转换器可用于从类型:[]转换为所需类型:输入数据流]
如有任何帮助,我将不胜感激
1条答案
按热度按时间htrmnn0y1#
该错误似乎发生在对
WeatherForecast
类数组进行(成功)解组之后,此时需要将获得的POJO数组写入文件系统:Camel希望使用转换器将您的主体(bean数组)转换为输入流,以便能够将其写入磁盘,这并不奇怪