1
resposta

[Dúvida] Dificuldade em tratar jsons aninhados em java

Comecei a me aprofundar em java e me deparei com um desafio bem difícil para mim, o de tratar os jsons aninhados que vem ao fazer algumas requisições http, principalmente quando tem varias. Por isso venho aqui pedir ajuda sobre como resolver isso, se tem alguma técnica, metódo ou até algum vídeo que facilite lidar com esse aninhamento.

Um exemplo do que eu to falando:
Como eu faria para pegar somente os itens e dentro dele os detalhes.

{
"pedidoId": 1001,
"cliente": "Gustavo",
"itens": [
{
"produto": "Notebook",
"quantidade": 1,
"preco": 4500.00,
"detalhes": {
"marca": "Dell",
"modelo": "Inspiron 15",
"garantiaMeses": 12
}
},
{
"produto": "Mouse",
"quantidade": 2,
"preco": 150.00,
"detalhes": {
"marca": "Logitech",
"tipo": "Wireless",
"dpi": 1600
}
}
]
}

Quanto mais aninhamento e mais itens mais dificulta para mim

1 resposta

Olá Gustavo! Como vai?

Sei bem que lidar com JSONs aninhados pode ser um pouco desafiador no início, mas com algumas ferramentas e técnicas, você conseguirá manipular esses dados com mais facilidade.

Uma das bibliotecas mais populares para trabalhar com JSON em Java é a Jackson. Ela permite que você converta JSONs em objetos Java e vice-versa de maneira bem simples.

Para o seu exemplo, você pode começar criando classes que representem a estrutura do seu JSON. Veja como você pode fazer isso:

import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;

class Pedido {
    private int pedidoId;
    private String cliente;
    private List<Item> itens;

    // Getters e Setters
}

class Item {
    private String produto;
    private int quantidade;
    private double preco;
    private Detalhes detalhes;

    // Getters e Setters
}

class Detalhes {
    private String marca;
    private String modelo;
    private int garantiaMeses;
    private String tipo;
    private int dpi;

    // Getters e Setters
}

public class Main {
    public static void main(String[] args) {
        String json = "{ \"pedidoId\": 1001, \"cliente\": \"Gustavo\", \"itens\": [ { \"produto\": \"Notebook\", \"quantidade\": 1, \"preco\": 4500.00, \"detalhes\": { \"marca\": \"Dell\", \"modelo\": \"Inspiron 15\", \"garantiaMeses\": 12 } }, { \"produto\": \"Mouse\", \"quantidade\": 2, \"preco\": 150.00, \"detalhes\": { \"marca\": \"Logitech\", \"tipo\": \"Wireless\", \"dpi\": 1600 } } ] }";

        ObjectMapper objectMapper = new ObjectMapper();
        try {
            Pedido pedido = objectMapper.readValue(json, Pedido.class);
            for (Item item : pedido.getItens()) {
                System.out.println("Produto: " + item.getProduto());
                System.out.println("Marca: " + item.getDetalhes().getMarca());
                // Continue acessando outros detalhes conforme necessário
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Neste exemplo, usamos a biblioteca Jackson para mapear o JSON em objetos Java. As classes Pedido, Item e Detalhes representam a estrutura do JSON. Depois, usamos o ObjectMapper para converter o JSON em um objeto Pedido. A partir daí, você pode acessar os itens e seus detalhes facilmente.

Certifique-se de adicionar a dependência da biblioteca Jackson ao seu projeto. Se estiver usando Maven, adicione a seguinte dependência ao seu pom.xml:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.5</version>
</dependency>

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.