将响应转换为DTO的正确方法



我在这里有这个响应,我想对它进行解析,以清除来自我的服务的一些信息。我想知道是否有更好的方法来转换有的响应

"cnpj": {
"numeroCNPJ": "string"
},

一个键,然后在另一个键内,直接返回";cnpj":"字符串";例如我实施了它,但实际上,我认为有更好的解决方案来解决这个问题。

休息服务的Json:

{
"cnpj": {
"numeroCNPJ": "string"
},
"codigoCNES": {
"codigo": "string"
},
"codigoUnidade": {
"codigo": "string"
},

"diretor": {
"cpf": {
"numeroCPF": "string"
},
"nome": {
"nome": "string"
}
},
"nomeEmpresarial": {
"nome": "string"
},
"nomeFantasia": {
"nome": "string"
}
}

我想要的Json:

{
"cnpj": "string",
"codigoCNES": "string",
"codigoUnidade":  "string",
"diretor": {
"nome": "string",
"numeroCPF": "string"
},

"nomeEmpresarial""string",
"nomeFantasia": "string"

}

DTO类别:

@Data
public class CNESDto {
private String codigoCNES;
private String codigoUnidade;
private String nomeFantasia;
private String nomeEmpresarial;
private String cnpj;
private DiretorDto diretor;
}

我映射它的方式,我想知道是否有一种干净的方法来实现它

private CNESDto getCnesDto(DadosGeraisEstabelecimentoSaudeType response) {
DiretorDto diretorDto = new DiretorDto();
diretorDto.setName(response.getDiretor().getNome().getNome());
diretorDto.setCpf(response.getDiretor().getCPF().getNumeroCPF());
CNESDto cnesDto = new CNESDto();
cnesDto.setCodigoCNES(response.getCodigoCNES().getCodigo());
cnesDto.setCodigoUnidade(response.getCodigoUnidade().getCodigo());
cnesDto.setNomeFantasia(response.getNomeFantasia().getNome());
cnesDto.setNomeEmpresarial(response.getNomeEmpresarial().getNome());
cnesDto.setCnpj(response.getCNPJ().getNumeroCNPJ());
cnesDto.setEndereco(response.getEndereco());
cnesDto.setDiretor(diretorDto);
return cnesDto;
}

https://github.com/octomix/josson

Josson josson = Josson.fromJsonString(
"{" +
"  "cnpj": {" +
"    "numeroCNPJ": "string"" +
"  }," +
"  "codigoCNES": {" +
"    "codigo": "string"" +
"  }," +
"  "codigoUnidade": {" +
"    "codigo": "string"" +
"  }," +
" " +
"  "diretor": {" +
"    "cpf": {" +
"      "numeroCPF": "string"" +
"    }," +
"    "nome": {" +
"      "nome": "string"" +
"    }" +
"  }," +
"  "nomeEmpresarial": {" +
"    "nome": "string"" +
"  }," +
"  "nomeFantasia": {" +
"    "nome": "string"" +
"  }" +
"}");

JsonNode node = josson.getNode(
"entries().map(" +
"    key::value.if([size()=1], *, **.mergeObjects())" +
")" +
".mergeObjects()");
System.out.println(node.toPrettyString());

输出

{
"cnpj" : "string",
"codigoCNES" : "string",
"codigoUnidade" : "string",
"diretor" : {
"numeroCPF" : "string",
"nome" : "string"
},
"nomeEmpresarial" : "string",
"nomeFantasia" : "string"
}

最新更新