2

我正在尝试在骆驼 k 中解析 http 请求的响应正文。响应是 json 形式的{"weather":{...}, foo:{...},...},我只对这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]

我假设我首先必须将ByteArrayInputStreamjson 转换为更方便的数据格式,然后才能访问各个字段。

使用 camel k 执行此操作的正确方法是什么?

4

1 回答 1

1

我自己发现了。

// 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}");

  }
}
于 2021-01-26T14:38:38.683 回答