Olá a todos.
desenvolvi uma API que simpesmente recebe uma url via get e devolve o resultado em json, tudo funciona bem, mas por algum motivo que eu não sei identificar, em um controller ele devolve um json como esperado {"chave": valor}, já npo outro controller ele está devolvendo apenas { valor} .Porque isso acontece?, oque posso fazer para que seja sempre retornado um json com chave e valor?
1- serializando com chave e valor:
@Controller
public class ContratoController {
@Inject
private ContratoFacade contratoFacade;
@Inject
private UnidadeFacade unidadeFacade;
@Inject
private EnteFacade enteFacade;
@Inject
private Result result;
@Get("/contratos")
public void lista(Integer enteId, Integer unidadeId, Integer exercicio) throws SQLException{
if(enteId==null && unidadeId==null && exercicio==null){
result.use(Results.http()).setStatusCode(HttpServletResponse.SC_BAD_REQUEST);
result.use(Results.json()).withoutRoot().from("Informe pelo menos um parâmetro para a consulta.").serialize();
}
else if(enteId!=null && enteFacade.buscarEntePorId(enteId)==null){
result.use(Results.http()).setStatusCode(HttpServletResponse.SC_BAD_REQUEST);
result.use(Results.json()).withoutRoot().from("Ente inexistente.").serialize();
}
else if(unidadeId!=null && unidadeFacade.buscarUnidadePorId(unidadeId)==null){
result.use(Results.http()).setStatusCode(HttpServletResponse.SC_BAD_REQUEST);
result.use(Results.json()).withoutRoot().from("Unidade inexistente.").serialize();
}
else{
Collection<ContratoDTO> contratos = contratoFacade.findContratoExportacao(enteId,unidadeId, exercicio);
result.use(Results.json()).indented().serializeNulls().withoutRoot().from(contratos).recursive().serialize();
}
}
}
Trecho da Resposta:
[
{
"contratoId": 60105,
"dataAssinatura": "2018-01-18T00:00:00-0300",
"numeroContrato": "04",
"dataVigenciaInicio": "2018-01-18T00:00:00-0300",
"dataVigenciaFim": "2019-01-18T00:00:00-0300",
"dataPublicacaoContrato": null,
"dataEnvioPublicacao": null,
"objeto": "APERFEIÇOAMENTO DAS ATIVIDADES DO PROCESSO DE REGULAÇÃO DO ACESSO AOS SERVIÇOS DE SAÚDE DA REDE PÚBLICA",
"valorContrato": 14205991.08,
"fornecedor": {
"fornecedorId": 5788,
"nome": "EMPRESA MARANHENSE DE SERVIÇOS HOSPITALARES - EMSERH",
"cpfCnpj": "18519709000163"
},
2- está serializando apenas o valor:
@Controller
public class ConvenioController {
@Inject
private Result result;
@Inject
private ConvenioFacadeBean convenioFacadeBean;
@Get
@Path("/convenios")
public void pesquisarConvenio(Integer enteId, Integer unidadeId, Integer exercicio){
if(enteId == null && unidadeId == null && exercicio == null){
result.use(Results.http()).setStatusCode(HttpServletResponse.SC_BAD_REQUEST);
result.use(Results.json()).withoutRoot().from("Informe pelo menos um parâmetro para a consulta.").serialize();
}
Collection<Convenio> convenios = convenioFacadeBean.findConvenioByEnte(enteId, unidadeId, exercicio);
result.use(Results.json()).indented().serializeNulls().withoutRoot().from(convenios).serialize();
}
}
Trecho da Resposta:
[
[
50,
2253206,
4178,
"000000",
"05.025.553/0001-12",
"Sr. Fernando Tadeu Mendonça\r\nLima, portador da C.I. nº 28882194-7-SSP/MA, CPF n° 094.619.813-\r\n68.",
0,
"00000",
0,
0,
0,
"2009-10-20T00:00:00-0300",
0,
"000",
"000",
"0000 ",
"2009-10-20T00:00:00-0300",
"J",
"TERMO DE COOPERAÇÃO\r\nSECRETARIA DE ESTADO DO DESENVOLVIMENTO\r\nAGRÁRIO\r\nEXTRATO DE COOPERAÇÃO TÉCNICA. Extrato de Termo de\r\nCooperação Técnica e Gerencial de entre si celebram de um lado o\r\nEstado do Maranhão, por meio da Secretaria de Estado do Desenvolvimento\r\nAgrário ¿ SEDAGRO, inscrita no CNPJ nº. 10.827.872/0001-\r\n81, OBJETO DO TERMO: Adesão e o compromisso da construção e/\r\nou fortalecimento de parcerias visando a integração, harmonização e\r\notimização dos recursos humanos, materiais e financeiros, por meio da\r\nação conjunta dos acordantes envolvidos nos Programas e Ações de\r\nDesenvolvimento Agrário Sustentável do Estado do Maranhão",
1,
2009,
2009,
"2011-07-31T00:00:00-0300",
"2009-11-10T00:00:00-0300",
"2009-11-10T00:00:00-0300",
"2009-11-10T00:00:00-0300"
],