Galera, preciso de ajuda, tenho que fazer uma consulta no banco em um campo que armazena XML e o front-end me envia json. É uma consulta de log, então a front vai sempre me mandar no json o primeiro campo como o nome da tabela e o outro será uma lista de parâmetros, o que preciso é pegar o segundo parâmetro(lista) em json e converter para xml. Tenho que usar o Jackson. Alguém pode me ajudar?
json de entrada: { "nmtabela":"CLIENTES", "params": [ { "ID": "45096" }, { "PENDENCIA":"S" } ] }
XML de saída(o que eu preciso, mas não estou conseguindo) 45096S
Classe Endpoint e método extracao que recebe a request
public Response extracao(@PathParam("mapping") String mapping, Map<String, Object> values) {
// verifica se existe uma entrada para o mapping solicitado
try (InputStream is = LogsEndpoint.class.getResourceAsStream("/rs/logs/queries/receber/" + mapping + ".json")) {
if (is != null) {
StringBuilder valorXML = new StringBuilder();
Map<String, Object> map = new HashMap<>();
//* aqui é o ponto em que preciso converter o value em xml fiz algumas tentativas mas não tive sucesso*//
for (Map.Entry<String, Object> v : values.entrySet()) {
if (v.getKey().equals("nmtabela")) {
map.put(v.getKey(), v.getValue());
} else if (v.getKey().equals("params")) {
ObjectMapper objectMapper = new ObjectMapper();
byte[] test;
test = objectMapper.writeValueAsBytes(v.getValue());
System.out.println(objectMapper.toString());
}
}
return Response.ok((new QueryProcessorLogs()).execute(is, values)).build();
} else {
return Response.status(Response.Status.BAD_REQUEST).entity(new FailedResponse("Modelo de extração inválido")).build();
}
} catch (RuntimeException e) {
LelloServicesLogger.severe(e);
return Response.status(Response.Status.BAD_REQUEST).entity(new FailedResponse(e.getMessage())).build();
} catch (Exception e) {
LelloServicesLogger.severe(e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(new FailedResponse("Houve um problema na extração do conteúdo")).build();
}
}