我有一个camel路径,它接受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}]
任何帮助都将不胜感激。
2条答案
按热度按时间mitkmikd1#
根据CamelJsonpath的文档,拆分的JSON文档部分的消息体是Map。
但是,它说使用Camel 2.20或更新版本,您可以使用
jsonpathWriteAsString
来获取JSON字符串,而不是Map。对于早期版本的Camel,必须使用Camel JSON data format将消息正文从Map编组为JSON String。
nzkunb0c2#
这篇文章是旧的,但我不喜欢让一个问题没有答案,我试图在这里。
Camel 2.17:collate函数迭代消息体,并将数据分组到指定大小的子列表中。它可以与Splitter EIP一起使用来拆分消息体,并将拆分的子消息分组/批处理到一组N个子列表中。此方法的工作原理与Groovy中的collate方法类似。
使用方法: