2
respostas

Classes de séries estrutura

Olá, estou vendo os vídeos em que fazem a modelagem de séries e ficou uma dúvida, no curso de OOP, não ficou claro sobre a necessidade do uso do gson e jackson, o que eles fazem? Tinha entendido que eles geravam uma classe por causa do ::NomedaClasse, mas a gente tem que criar uma classe que lê o json, outra que faz a validação do tipo de dados que seria a Série, é isso? Sei que vai o passo a passo, mas fica um pouco difícil de enxergar a estrutura como um todo e o que cada classe está fazendo, o que está sendo feito é por causa do SOLID?

2 respostas

Oi Gisele! Tudo bem?

Lembra que os dados que buscamos da API são dados dessa forma?

{
  "Title": "The Name of the Game",
  "Year": "2019",
  "Rated": "TV-MA",
  "Released": "26 Jul 2019",
  "Season": "1",
  "Episode": "1",
  "Runtime": "60 min",
  "Genre": "Action, Comedy, Crime",
  "Director": "Dan Trachtenberg",
  "Writer": "Eric Kripke, Garth Ennis, Darick Robertson",
  "Actors": "Karl Urban, Jack Quaid, Antony Starr",
  "Plot": "When a Supe kills the love of his life, A/V salesman Hughie Campbell teams up with Billy Butcher, a vigilante hell-bent on punishing corrupt Supes -- and Hughie's life will never be the same again.",
  "Language": "English",
  "Country": "United States, Canada",
  "Awards": "N/A",
  "Poster": "https://m.media-amazon.com/images/M/MV5BMzM4OTA4NDQtYWVlOC00NjkxLTk4NTEtNTY5ZDY4NTgwZjMyXkEyXkFqcGc@._V1_SX300.jpg",
  "Ratings": [
    {
      "Source": "Internet Movie Database",
      "Value": "8.7/10"
    }
  ],
  "Metascore": "N/A",
  "imdbRating": "8.7",
  "imdbVotes": "22583",
  "imdbID": "tt7775902",
  "seriesID": "tt1190634",
  "Type": "episode",
  "Response": "True"
}

Esse é um arquivo no formato JSON. Mas o nosso projeto em Java não entende o JSON da forma como ele está, o ideal é que as informações desse jSON sejam convertidas em uma classe/objeto, que é o que o Java entende. Para fazer essa conversão, podemos usar bibliotecas que já fazem isso, como Gson ou o Jackson. Com essas bibliotecas, conseguimos tanto receber o JSON e transformar em um objeto, quanto devolver um objeto no formato de Json.

No projeto, queremos tanto pegar os dados da API quanto guardar esses dados no banco. Poderíamos então ter essas duas coisas em uma classe só (nada te impede de fazer dessa forma), mas ficaria muito complexo de gerenciar. Por isso, separamos em duas classes diferentes, usando o SOLID, como você comentou.

Sobre a parte do ::NomeDaClasse, você pode me falar onde ele aparece? Que aí consigo te ajudar melhor.

Obrigada. É como em qualquer outra linguagem, então, no javascript também tem conversão e uma delas se não me engano é o stringfy, achei que fosse para outra funcionalidade.

Essa parte é do curso anterior, como está dando continuidade a API, porque foi comentado aqui sobre serialização.

A parte do dois pontos era isso, mas eu confundiperguntei aqui:

  lista.sort(Comparator.comparing(Titulo::getAnoDeLancamento));

repositório - https://github.com/alura-cursos/2944-java-screenmatch-consumindo-webservice/blob/main/src/br/com/alura/screenmatch/principal/PrincipalComListas.java

Aliás, achei diferente essa forma de fazer ordenação, precisa usar Comparator.comparing(Titulo::getAnoDeLancamento).

Mas na verdade usa .class, eu achei que gerava uma classe:

Gson gson = new Gson(); Pessoa pessoa = gson.fromJson(json, Pessoa.class);