Aproveitei o codigo que tinha feito para os dois primeiros desafios e o reutilizei no terceiro com leves alteracoes, agora para desserializar um JSON em uma class Book.
Desafio 3
"Crie uma classe Livro que contenha atributos como título, autor e um objeto representando a editora. Em seguida, implemente um programa que utiliza a biblioteca Gson para converter um JSON aninhado representando um livro em um objeto do tipo Livro."
Este e minha resolucao:
package com.company.app;
import com.company.app.domain.Book;
import com.company.app.service.MainService;
import com.company.app.util.GsonProvider;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        MainService gson = new MainService();
        String json = """
                {
                    "title": "Divergente",
                    "authors": ["Veronica Roth"],
                    "editor": {
                        "name": "Rocco",
                        "city": "United Kingdom",
                        "foundationDate": "2011-01-26",
                        "gender": ["Action", "Adventure", "Science Fiction", "Dystopia"]
                    }
                }
                """;
        Book book = gson.fromJson(json, Book.class);
        String test = GsonProvider.getGson().toJson(book);
        System.out.println(test);
        if (book == null) {
            return;
        }
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        System.out.printf(
                "%nTitle: %s%nAuthors: %s%n%nEditor %nName: %s%nCity: %s%nFoundationDate: %s%nGender: %s%n",
                book.title(),
                Arrays.asList(book.authors()),
                book.editor().getName(),
                book.editor().getCity(),
                book.editor().getFoundationDate().format(dtf),
                Arrays.asList(book.editor().getGender())
        );
    }
}
package com.company.app.domain;
import com.company.app.domain.internal.Editor;
public record Book(String title, String[] authors, Editor editor) {
}
package com.company.app.domain.internal;
import java.time.LocalDate;
@lombok.Data
public class Editor {
    String name;
    String city;
    LocalDate foundationDate;
    String[] gender;
}
package com.company.app.service;
import com.company.app.util.GsonProvider;
import org.jetbrains.annotations.NotNull;
public class MainService {
    public <T> T fromJson(@NotNull String json, @NotNull Class<T> classOfT) {
        return GsonProvider.getGson().fromJson(json, classOfT);
    }
    public <T> String toJson(@NotNull T object) {
        return GsonProvider.getGson().toJson(object);
    }
}
package com.company.app.util;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Contract;
import com.google.gson.GsonBuilder;
import com.google.gson.Gson;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@lombok.experimental.UtilityClass
public class GsonProvider {
    @lombok.Getter
    private final Gson gson = get();
    @ApiStatus.Internal
    @Contract(" -> new")
    private static @NotNull Gson build() {
        return new GsonBuilder().serializeNulls().create();
    }
    @ApiStatus.Internal
    @Contract(" -> new")
    private static @NotNull Gson get() {
        return new GsonBuilder().registerTypeAdapter(LocalDate.class, new TypeAdapter<LocalDate>() {
            @Override
            public void write(JsonWriter out, LocalDate localDate) throws IOException {
                out.value(localDate.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
            }
            @Override
            public LocalDate read(JsonReader in) throws IOException {
                return LocalDate.parse(in.nextString());
            }
        }).serializeNulls().create();
    }
}
Saida: 
  
Depois de tantos errors que enfrentei no primeiro desafio, este foi mel na chupeta comparado a ele.
 
             
             Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
 Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!