如何在 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}");

  }
}