我正在尝试在Apache Camel中将一个简单的JSON文件转换为POJO,但我无法让它工作。
路线.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"}]
我收到的错误是:没有可用的主体类型:java.io.输入流,但具有类型:org.acme.bindy.ftp.天气预报[]on:weather.json.由:没有类型转换器可用于从类型:org.acme.bindy.ftp.天气预报[]转换到所需的类型:java.io.输入流。交换[]。由:[org.apache.camel.NoTypeConversion可用性异常-没有类型转换器可用于从类型:org.acme.bindy.ftp.天气预报[]转换到所需的类型:java.io.输入流]
任何帮助将不胜感激
错误似乎发生在(成功)解组到WeatherForecast
类数组之后,当需要将获得的POJO数组写入文件系统时:
.unmarshal().json(JsonLibrary.Jackson, WeatherForecast[].class)
.to("file:{{json.processed}}");
毫不奇怪,Camel期待一个转换器将你的身体(一组豆子)变成一个输入流,以便能够将其写入磁盘。
...to convert from type: org.acme.bindy.ftp.WeatherForecast[] to the required type: java.io.InputStream
问题内容: 我正在将Jersey用于REST WS,并且得到的响应为JSON。 我想将此响应转换为POJO。怎么做 ? 问题答案: 要在Java和JSON之间进行转换,有很多可供选择的API 。 您可以“手动”遍历JSON组件并提取值以填充Java对象,或者可以使用JSON到Java的绑定API来解决许多低级映射问题。
问题内容: 我想将Intent的Extras Bundle转换为JSONObject,以便可以将其传递给JavaScript。 有没有快速或最佳的方法来进行此转换?如果不是所有可能的捆绑包都能正常工作,那就没关系了。 问题答案: 您可以用来获取捆绑软件包含的密钥列表。然后,您可以遍历这些键,并将每个键值对添加到中: 请注意,这将需要您抓住一个。 编辑: 有人指出,以前的代码不能很好地处理和键入。如
问题内容: 我试图将JSON输出转换为XML。不幸的是我得到这个错误: JSON根对象具有多个属性。根对象必须具有单个属性才能创建有效的XML文档。考虑指定DeserializeRootElementName。 这就是我到目前为止所创建的。 这是我的JSON输出: 我怎么解决这个问题? 问题答案: 尽管问题中提供的JSON并不完整,但您在顶层具有多个属性,如异常所示。您必须为其定义根以获取有效的X
问题内容: 我似乎找不到此问题的答案。如何在JavaScript中将URL参数字符串转换为JSON?我的意思是问是否有像这样的内置功能或可以完成这项工作的单线? 例: => 问题答案: 您可以创建一个将返回JSON对象的方法 演示:http://jsfiddle.net/jAGN5/
问题内容: 像这样转换JSON代码的最佳方法是什么: 在Java Map中,其中一个键为(field1,field2),而这些字段的值为(value1,value2)。 有任何想法吗?我应该使用Json-lib吗?或者,如果我编写自己的解析器会更好? 问题答案: 我希望您在开玩笑编写自己的解析器。:-) 对于这种简单的映射,http://json.org(java部分)中的大多数工具都可以使用。对
问题内容: 我正在使用json-rpc-1.0.jar。以下是我的代码。由于响应为JSON,因此我需要将InputStream对象转换为JSON。 我确实验证了从Zappos API获得的json响应。是有效的。 我得到以下提到的异常: 问题答案: 利用Jackson JSON解析器。 推荐- 杰克逊之家 您唯一需要做的是- 现在将包含JSON。
我似乎找不到这个问题的答案。如何在JavaScript中将URL参数字符串转换为JSON?我的意思是问是否有这样的内置函数或一行程序可以完成这项工作? =>
问题内容: 我在Swift 中将元素转换为,然后将变量转换回时遇到了问题。 首先,我想提取以下JSON数据的元素: 放入NSData 变量,但似乎无法做到这一点。我用来解析如下: 但这给了我一个ScalarNumber数组,我不知道如何存储到一个对象中。 其次,我想从同一个对象生成回来: 但是NSData 对象不会转换为[-67,51,-38,61,-72,102,48],它只是使JSON字符串无