Разделение массива Json с верблюдом - PullRequest
0 голосов
/ 01 июля 2018

У меня есть верблюжий маршрут, который принимает объект String из json, вызывает 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},...]

* После 1014 *

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

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 05 июля 2018

В соответствии с документацией Camel Jsonpath телом сообщения разделенной части документа JSON является карта.

Однако в нем говорится, что с Camel 2.20 или новее вы можете использовать jsonpathWriteAsString, чтобы получить строку JSON вместо карты.

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

Для более ранних версий верблюда вы должны использовать Формат данных JSON Camel , чтобы упорядочить тело сообщения из карты в строку JSON.

...