我以这种方式接近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