2
respostas

decerializaçao de dados

ola boa noite na aula ela mostrou como decerializar um jsom normal
eu peguei uma outra API e veio desse tipo {"message": {"type": "notice", "text": "No advice slips found matching that search term."}}
parece um jsom detro do outro e deu erro como era de se esperar como eu consigo faser essa deserialisaçao

nao si se ajuda e me ajudar mais isso e um jsonp nao e um Json nemum Objeto

string Para definir seu próprio nome de função de retorno de chamada e retornar o JSON em um wrapper de função (como JSONP), adicione o parâmetro callback com o nome desejado como valor.

o pior que eu estou usando spring sem web e vi que isso e consumido por web via GET

2 respostas

Olá Maurício, tudo bem?

Primeiro, é importante garantir que você está lidando com um JSON e não com JSONP, já que JSONP é uma técnica usada para contornar restrições de política de mesma origem em navegadores e geralmente envolve um retorno de chamada em JavaScript.

No seu caso, parece que você está lidando com um JSON normal, pois a estrutura que você mostrou é um JSON válido. Para deserializar esse JSON em Java usando o Spring Framework, você pode usar a biblioteca Jackson, que é bastante popular para esse tipo de tarefa.

Aqui está um exemplo de como você pode deserializar o JSON que você forneceu:

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) {
        String jsonString = "{\"message\": {\"type\": \"notice\", \"text\": \"No advice slips found matching that search term.\"}}";
        
        ObjectMapper objectMapper = new ObjectMapper();
        
        try {
            MessageWrapper messageWrapper = objectMapper.readValue(jsonString, MessageWrapper.class);
            System.out.println("Type: " + messageWrapper.getMessage().getType());
            System.out.println("Text: " + messageWrapper.getMessage().getText());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class MessageWrapper {
    private Message message;

    // getters e setters
    public Message getMessage() {
        return message;
    }

    public void setMessage(Message message) {
        this.message = message;
    }
}

class Message {
    private String type;
    private String text;

    // getters e setters
    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}

Neste exemplo, criamos duas classes, MessageWrapper e Message, para corresponder à estrutura do JSON. Usamos o ObjectMapper da biblioteca Jackson para converter a string JSON em um objeto Java.

Espero ter ajudado e bons estudos!

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

bom dia
no caso eu fiz uma record com o jackson e busquei so o text funciona mas esta dando null no retorno