如何在 Camel K 中将 InputStream 转换为 Json
How to convert InputStream to Json in Camel K
我正在尝试解析 camel k 中的 http 请求的响应主体。响应是 {"weather":{...}, foo:{...},...}
形式的 json,我只对 weather
部分感兴趣。我尝试了以下方法:
// camel-k: language=java
import org.apache.camel.builder.RouteBuilder;
public class Weather extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:test?period=5000")
.to("ahc:{{weather.uri}}")
.log("${body.weather}");
}
}
这会导致以下异常:
org.apache.camel.component.bean.MethodNotFoundException: Method with name: weather not found on bean: java.io.ByteArrayInputStream@3584bf09 of type: java.io.ByteArrayInputStream on the exchange: Exchange[C8E32A97D83EBF3-000000000000001B]
我假设我首先必须将 ByteArrayInputStream
转换为更方便的数据格式,例如 json,然后才能访问各个字段。
使用 camel k 执行此操作的正确方法是什么?
我自己发现的
// camel-k: language=java
import org.apache.camel.builder.RouteBuilder;
public class Weather extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:test?period=5000")
.to("ahc:{{weather.uri}}")
.unmarshal().json()
.transform(simple("${body[weather]}"))
.log("${body}");
}
}
我正在尝试解析 camel k 中的 http 请求的响应主体。响应是 {"weather":{...}, foo:{...},...}
形式的 json,我只对 weather
部分感兴趣。我尝试了以下方法:
// camel-k: language=java
import org.apache.camel.builder.RouteBuilder;
public class Weather extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:test?period=5000")
.to("ahc:{{weather.uri}}")
.log("${body.weather}");
}
}
这会导致以下异常:
org.apache.camel.component.bean.MethodNotFoundException: Method with name: weather not found on bean: java.io.ByteArrayInputStream@3584bf09 of type: java.io.ByteArrayInputStream on the exchange: Exchange[C8E32A97D83EBF3-000000000000001B]
我假设我首先必须将 ByteArrayInputStream
转换为更方便的数据格式,例如 json,然后才能访问各个字段。
使用 camel k 执行此操作的正确方法是什么?
我自己发现的
// camel-k: language=java
import org.apache.camel.builder.RouteBuilder;
public class Weather extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:test?period=5000")
.to("ahc:{{weather.uri}}")
.unmarshal().json()
.transform(simple("${body[weather]}"))
.log("${body}");
}
}