2
respostas

Erro apos o split de um arquivo json

Gostaria de obter o titulo do do arquivo json, após realizar o split o camel retorna o seguinte erro ,segue fonte e erro obtido:


                from("file:arquivos/retornomobato?delay=60s&noop=true").        
                    log("${body}").
                    setProperty("status").jsonpath("$.statusRetorno.sucesso").                    
                    log("${property.status}").
                    split().jsonpath("$.planosAcoesCLs").
                        setProperty("teste").jsonpath("$.titulo").                    
                        log("${property.teste}").
                        log("${body}").
                        to("mock:result");    
ERROR 12:01:04.373 - Failed delivery for (MessageId: ID-pop-os-35281-1575554462935-0-3 on ExchangeId: ID-pop-os-35281-1575554462935-0-4). Exhausted after delivery attempt: 1 caught: org.apache.camel.ExpressionEvaluationException: org.apache.camel.InvalidPayloadException: No body available of type: java.io.InputStream but has value: {idPlanoAcao=97, titulo=tetse, descricao=ajajshduajaa, dataCriacao=1570620642000, dataPrevFim=1572003023000, dataEncerramento=null, situacao=AB, planoAcaoAtivList=[]} of type: java.util.LinkedHashMap on: Message: {idPlanoAcao=97, titulo=tetse, descricao=ajajshduajaa, dataCriacao=1570620642000, dataPrevFim=1572003023000, dataEncerramento=null, situacao=AB, planoAcaoAtivList=[]}. Caused by: No type converter available to convert from type: java.util.LinkedHashMap to the required type: java.io.InputStream with value {idPlanoAcao=97, titulo=tetse, descricao=ajajshduajaa, dataCriacao=1570620642000, dataPrevFim=1572003023000, dataEncerramento=null, situacao=AB, planoAcaoAtivList=[]}. Exchange[ID-pop-os-35281-1575554462935-0-4][Message: {idPlanoAcao=97, titulo=tetse, descricao=ajajshduajaa, dataCriacao=1570620642000, dataPrevFim=1572003023000, dataEncerramento=null, situacao=AB, planoAcaoAtivList=[]}]. Caused by: [org.apache.camel.NoTypeConversionAvailableException - No type converter available to convert from type: java.util.LinkedHashMap to the required type: java.io.InputStream with value {idPlanoAcao=97, titulo=tetse, descricao=ajajshduajaa, dataCriacao=1570620642000, dataPrevFim=1572003023000, dataEncerramento=null, situacao=AB, planoAcaoAtivList=[]}]

Alguém poderia me ajudar?

2 respostas

A informação original esta assim:

{"statusRetorno":{"sucesso":true,"mensagemErro":null},"planosAcoesCLs":[{"idPlanoAcao":97,"titulo":"tetse","descricao":"ajajshduajaa","dataCriacao":1570620642000,"dataPrevFim":1572003023000,"dataEncerramento":null,"situacao":"AB","planoAcaoAtivList":[]}]}

ao usar o split o data não esta mais em json

{idPlanoAcao=97, titulo=tetse, descricao=ajajshduajaa, dataCriacao=1570620642000, dataPrevFim=1572003023000, dataEncerramento=null, situacao=AB, planoAcaoAtivList=[]}

os ':' foram convertidos em '=', como faço para manter o formato de json?

Oi Silvio, tudo bem?

Após o split você precisará fazer o marshal das informações utilizando alguma lib json da seguinte forma:

.marshal().json(JsonLibrary.Jackson)