Enviado em 27/06/2018 - 19:57h
Olá a todos. Estou com um problema grande e gostaria de uma grande ajuda.
Me tiraram do ambiente que conheço bem (php) e me jogaram em um que ainda estou dando os primeiros passos (java).
Estou trabalhando em uma api rest que recebe um JSON de uma fonte externa. Acontece que nao consigo gravar no banco quando o json vem com array.
exemplificar:
se vier assim:
Mas se vier
Lendo descobri que tenho que serializar / deserializar o json. Pode ser com a biblioteca Gjson, jackson, etc. Como estou trabalhando com spring boot 2 e spring 5, que vem como padrão o jackson estou usando essa biblioteca.
No domínio tenho as classes Cliente e Telefone da seguinte maneira:
Mas me perco ai. Alguém poderia ajudar com essa dor de cabeça?
Me tiraram do ambiente que conheço bem (php) e me jogaram em um que ainda estou dando os primeiros passos (java).
Estou trabalhando em uma api rest que recebe um JSON de uma fonte externa. Acontece que nao consigo gravar no banco quando o json vem com array.
exemplificar:
se vier assim:
{
"nome" : "fulano",
"numeroDeTelefone" : " 222222"
} grava ok. Mas se vier
o banco grava somente o nome e o telefone fica como null.
{
"nome" : "fulano"
"listaDeTelefones" :
[
{"numeroDeTelefone" : "2222"},
{"numeroDeTelefone" : "3333}
]
}
Lendo descobri que tenho que serializar / deserializar o json. Pode ser com a biblioteca Gjson, jackson, etc. Como estou trabalhando com spring boot 2 e spring 5, que vem como padrão o jackson estou usando essa biblioteca.
No domínio tenho as classes Cliente e Telefone da seguinte maneira:
@EntityE tenho a classe telefone:
public class Cliente
private String nome;
@ManytoMany
private List<Telefone> telefones = new ArrayList<>();
public Cliente() {}
getters e setters
@Entitycriei uma classe Cliente DTO:
public class Telefone
private String numero;
@JsonIgnore
@ManytoMany
private List<Cliente> clientes = new ArrayList<>();
public Telefone () {}
getters e setters
public class ClienteDTOe no service criei a classe ClienteService que além de alguns métodos tem o seguinte método:
private String nome;
private String numero;
public ClienteDTO () {}
getters e setters
public Cliente converteDoDTO(ClienteDTO clienteDTO) {
Cliente c = new Cliente(clienteDTO.getNome());
Telefone t = new Telefone(clienteDTO.getNumero());
c.getTelefones().addALL(Arrays.asList(t));
t.getClientes().addALL(Arrays.asList(c));
}
Sei que no DTO tenho que retirar o String numero e colocar um Telefone[] numeros;Mas me perco ai. Alguém poderia ajudar com essa dor de cabeça?