Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Split com Json

Boa Tarte!

Eu tenho um REST (http4://localhost:3000/pagamentos/aba) que retorna exatamente o conteúdo abaixo.

[
{
"id": 17,
"forma_de_pagamento": "cartao",
"valor": 10.87,
"moeda": "BRL",
"status": "CRIADO",
"data": "2016-09-29T03:00:00.000Z",
"descricao": "descrição do pagamento"
},
{
"id": 61,
"forma_de_pagamento": "TEREZA",
"valor": 10.87,
"moeda": "BRL",
"status": "CRIADO",
"data": "2016-10-13T03:00:00.000Z",
"descricao": "descrição do pagamento"
}
]

Quando uso o split com o jsonpath ele traz exatamente o registro que eu quero, porém ele perde a formatação do json retirando as aspas e trocando ":" por "=".

{forma_de_pagamento=TEREZA, moeda=BRL, data=2016-10-13T03:00:00.000Z, valor=10.87, id=61, status=CRIADO, descricao=descrição do pagamento}

Segue abaixo meu código.

        from("timer://period?fixedRate=true&delay=3s&period=160s")
        .to("http4://localhost:3000/pagamentos/aba")
        .to("direct:fila");

        from("direct:fila")
        .convertBodyTo(String.class)
        .split()
        .jsonpath("$.*[?(@.id > '60')]")   
        .to("activemq:queue:geral?Priority=1&ReplyTo=resposta");
`

Existe alguma forma de manter o json com o padrão original?

2 respostas
solução!

Oi Rafael, vc precisa gerar novamente o json:

from("direct:fila")
  .convertBodyTo(String.class)
  .split() .jsonpath("$.*[?(@.id > 60)]")   
  .marshal().json(JsonLibrary.Gson)
  .log("${body}")
.to("activemq:queue:geral?Priority=1&ReplyTo=resposta");

Para funcionar tem que ter a lib Gson no classpath:

http://camel.apache.org/json.html

abs

Perfeito ele reconstruiu da forma correta!