Erro de serialização ao enviar json de nota fiscal eletrônica através de integração com servidor rest
23/01/2020
0
Ao enviar json com dados da nota via post no Jsf, dá o erro abaixo com api Jackson. Por enquanto estou usando somente variáveis locais. Já tentei resolver com algumas anotações na classe do managed bean mas sem sucesso, ex:
@JsonAutoDetect(fieldVisibility = Visibility.ANY)
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
Código do método
Erro
Advertência: #{contasReceberBean.nfseAutorizar()}: com.sun.jersey.api.client.ClientHandlerException: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.codehaus.jettison.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )
javax.faces.FacesException: #{contasReceberBean.nfseAutorizar()}: com.sun.jersey.api.client.ClientHandlerException: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.codehaus.jettison.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )
@JsonAutoDetect(fieldVisibility = Visibility.ANY)
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
Código do método
public String nfseAutorizar() throws JSONException, JsonParseException { String login = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"; /* Substituir pela sua identificação interna da nota. */ String ref = lanc.getIdContas().toString();*/ String ref = "77477"; System.out.println(ref); String server = "https://homologacao.focusnfe.com.br/"; String url = server.concat("v2/nfse?ref=" + ref); /* Configuração para realizar o HTTP BasicAuth. */ Object config = new DefaultClientConfig(); Client client = Client.create((ClientConfig) config); client.addFilter(new HTTPBasicAuthFilter(login, "")); /* Aqui são criados as hash's que receberão os dados da nota. */ HashMap<String, String> nfse = new HashMap<>(); HashMap<String, String> prestador = new HashMap<>(); HashMap<String, String> tomador = new HashMap<>(); HashMap<String, String> tomadorEndereco = new HashMap<>(); HashMap<String, String> servico = new HashMap<>(); nfse.put("data_emissao", "2020-01-17T17:40:00"); nfse.put("natureza_operacao", "1"); prestador.put("cnpj", "17511734000138"); prestador.put("inscricao_municipal", "1357920013"); prestador.put("codigo_municipio", "3106200"); tomador.put("cnpj", "07056285000121"); tomador.put("razao_social", "EMPRESA TESTE"); tomador.put("email", "email-do-tomador@google.com.br"); tomadorEndereco.put("bairro", "Santa Cruz"); tomadorEndereco.put("cep", "30644200"); tomadorEndereco.put("codigo_municipio", "4106902"); tomadorEndereco.put("logradouro", "Estrada do Jatobá"); tomadorEndereco.put("numero", "88"); tomadorEndereco.put("uf", "MG"); servico.put("discriminacao", "Teste de servico"); servico.put("aliquota", "3.00"); servico.put("base_calculo", "1.0"); servico.put("valor_iss", "0"); servico.put("iss_retido", "false"); servico.put("codigo_tributario_municipio", "080101"); servico.put("item_lista_servico", "0102"); servico.put("valor_servicos", "1.0"); servico.put("valor_liquido", "1.0"); ObjectMapper objectMapper = new ObjectMapper(); //objectMapper.setVisibility(JsonMethod.FIELD, Visibility.ANY); objectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY); objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); /* Depois de fazer o input dos dados, são criados os objetos JSON já com os valores das hash's. */ //JSONObject json = new JSONObject (nfse); json = new JSONObject(nfse); JSONObject jsonPrestador = new JSONObject(prestador); JSONObject jsonTomador = new JSONObject(tomador); JSONObject jsonTomadorEndereco = new JSONObject(tomadorEndereco); JSONObject jsonServico = new JSONObject(servico); /* Aqui adicionamos os objetos JSON nos campos da API como array no JSON principal. */ json.accumulate("prestador", jsonPrestador); json.accumulate("tomador", jsonTomador); jsonTomador.accumulate("endereco", jsonTomadorEndereco); json.accumulate("servico", jsonServico); /* É recomendado verificar como os dados foram gerados em JSON e se ele está seguindo a estrutura especificada em nossa documentação. System.out.print(json); */ System.out.print(json); WebResource request = client.resource(url); ClientResponse resposta = request.type(MediaType.APPLICATION_JSON).post(ClientResponse.class, json); //ClientResponse resposta = request.type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, json); //ClientResponse resposta = request.post(ClientResponse.class, json); int httpCode = resposta.getStatus(); String body = resposta.getEntity(String.class); /* As três linhas a seguir exibem as informações retornadas pela nossa API. * Aqui o seu sistema deverá interpretar e lidar com o retorno. */ System.out.print("HTTP Code: "); System.out.print(httpCode); System.out.printf(body); return null; }
Erro
Advertência: #{contasReceberBean.nfseAutorizar()}: com.sun.jersey.api.client.ClientHandlerException: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.codehaus.jettison.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )
javax.faces.FacesException: #{contasReceberBean.nfseAutorizar()}: com.sun.jersey.api.client.ClientHandlerException: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.codehaus.jettison.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )
Bruno Andrade
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)