我有一条骆驼路线,它使用json的String对象,调用一个bean来剥离播放器的JSONArray。
from("direct:players").routeId("player_route")
.bean(BootstrapStaticParser.class,"getPlayersList")
.split(body())
.to("direct:aws");
但是我打电话之后:
.split(body())
在LinkedHashMap中应该是什么json字符串,但我需要保持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}]
任何帮助将不胜感激。
答案 0 :(得分:0)
根据documentation of Camel Jsonpath,拆分的JSON文档部分的消息正文为Map。
但是,它说,使用 Camel 2.20 或更高版本,您可以使用jsonpathWriteAsString
来获取JSON字符串而不是Map。
.split().jsonpathWriteAsString("$.yourJsonPath")
对于Cstrong的早期版本,您必须使用Camel JSON data format将消息主体从Map封送为JSON字符串。