0

我有一条骆驼路线,它采用 json 的 String 对象,调用一个 bean 来剥离一个 JSONArray 的玩家。

from("direct:players").routeId("player_route")
    .bean(BootstrapStaticParser.class,"getPlayersList")
    .split(body())
    .to("direct:aws");

但是在我打电话后:

.split(body())

什么应该是一个 json 字符串才进入 LinkedHashMap 但我需要维护 json 格式才能将数据插入 AWS DDB。

记录以显示问题

Exchange[ExchangePattern: InOnly, BodyType: net.minidev.json.JSONArray, Body: [{"id":1,"photo":"48844.jpg","web_name":"Player1","team_code":3},{"id":2,"photo":"11334.jpg","web_name":"Player2","team_code":3},{"id":3,"photo":"98980.jpg","web_name":"Player3","team_code":3},{"id":4,"photo":"51507.jpg","web_name":"Player4","team_code":3},...]

Exchange[ExchangePattern: InOnly, BodyType: java.util.LinkedHashMap, Body: {id=1, photo=48844.jpg, player=Player1, team_code=3}]

任何帮助,将不胜感激。

4

1 回答 1

0

根据Camel Jsonpath 的文档,拆分的 JSON 文档部分的消息正文是 Map。

但是,它说使用Camel 2.20或更高版本,您可以使用jsonpathWriteAsString获取 JSON 字符串而不是 Map。

.split().jsonpathWriteAsString("$.yourJsonPath")

对于较早版本的 Camel,您必须使用Camel JSON 数据格式将消息正文从 Map 编组为 JSON 字符串。

于 2018-07-05T09:42:00.040 回答