获取对象json节点的空指针异常

时间:2017-12-01 11:51:27

标签: java json date spring-boot nullpointerexception

我以这种方式接近json

"pessoa": {
        "nome": "asas",
        "tipoPessoa": "F",
        "dataNascimento": "15/06/1983",
        "foto": ""
    },
    "cns": "ewe",
    "pessoasFisicas": {
        "sexo": {
            "idSexo": "1"
        },
        "estadoCivil": {
            "idEstadoCivil": "2"
        },

        "dataObito": "11/12/2017"
    },
    "pessoasEnderecos": {
        "cep": "966",
        "pais": {
            "idPais": "5"
        },
        "municipio": {
            "idMunicipio": "1"
        }

    },
    "pessoasContatos": {
        "tipoContato": {
            "idTipoContato": "1"
        }
    },
    "pessoasCaracteristicas": {
        "cbors": {
            "idCbor": "1"
        } 
    }

我的方法中有两个问题是将它保存在数据库中。

中有空指针异常
Entidades entidades = new Entidades();
entidades.setIdEntidade(json.get("pessoa").get("entidade").get("idEntidade") == null ? 0l: json.get("pessoa").get("entidade").get("idEntidade").asLong());

但确定该方法为null,因为 entidade的业务规则不是强制性要求 但我需要知道在这种情况下我怎么没有nullPontException

查看保存数据的方法

@RequestMapping(method = RequestMethod.POST, value = "/pacientes")
    public HttpStatus cadastrarPacientes(@RequestBody ObjectNode json) throws ParseException  {


        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");

            Entidades entidades = new Entidades();
            entidades.setIdEntidade(json.get("pessoa").get("entidade").get("idEntidade")== null ? 0l: json.get("pessoa").get("entidade").get("idEntidade").asLong());

            Pessoas pessoas = new Pessoas();
            pessoas.setNome(json.get("pessoa").get("nome").textValue());
            pessoas.setNomeSocial(json.get("pessoa").get("nomeSocial")== null ? null : json.get("pessoa").get("nomeSocial").textValue());
            pessoas.setFoto(json.get("pessoa").get("foto").textValue()  == null ? null : json.get("pessoa").get("foto").textValue());
            pessoas.setNomePai(json.get("pessoa").get("nomePai") == null ? null : json.get("pessoa").get("nomePai").textValue());
            pessoas.setNomeMae(json.get("pessoa").get("nomeMae") == null ? null : json.get("pessoa").get("nomeMae").textValue());
            pessoas.setDataNascimento(formato.parse(json.get("pessoa").get("dataNascimento").textValue()));
            pessoas.setEntidade(new Entidades());
            pessoas.setEntidade(entidades);
            pessoas.setTipoPessoa(json.get("pessoa").get("tipoPessoa")== null ? null : json.get("pessoa").get("tipoPessoa").textValue());

            Paises pais = new Paises();
            pais.setIdPais(Long.parseLong(json.get("pessoasEnderecos").get("pais").get("idPais").textValue()));




PessoasFisicas pFisicas = new PessoasFisicas();
    pFisicas.setDataCadastroPisPasep(formato.parse(json.get("pessoasFisicas").get("dataCadastroPisPasep")== null ? "" : json.get("pessoasFisicas").get("dataCadastroPisPasep").textValue()));
            Ufs uf = new Ufs();
            uf.setIdUf(json.get("pessoasEnderecos").get("uf").get("idUf")== null ? 0L : json.get("pessoasEnderecos").get("uf").get("idUf").asLong());


    pacientesService.cadastrarPacientes(pFisicas, pCarac,pessoasEnderecos, pac );


     return HttpStatus.CREATED;
    }

我在其他情况下也有类似的错误..当我通过一个空日期我也得到了一个空...“

  pFisicas.setDataCadastroPisPasep(formato.parse(json.get("pessoasFisicas").get("dataCadastroPisPasep") == null ? "" : json.get("pessoasFisicas").get("dataCadastroPisPasep").textValue()));

所以我问..我可以处理这个错误,记住按照我的业务规则,可以将日期设为空并entidade

我正在使用api Spring boot

0 个答案:

没有答案