Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Kafka: Produtores, Consumidores e streams - Serialização Customizada - Baixei e rodei até o quarto módulo e o emailService não funciona

aused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 2 path $ at com.google.gson.Gson.fromJson(Gson.java:944) at com.google.gson.Gson.fromJson(Gson.java:897) at com.google.gson.Gson.fromJson(Gson.java:846) at com.google.gson.Gson.fromJson(Gson.java:817) at br.com.link.ecommerce.GsonDeserializer.deserialize(GsonDeserializer.java:29) at org.apache.kafka.common.serialization.Deserializer.deserialize(Deserializer.java:60) at org.apache.kafka.clients.consumer.internals.Fetcher.parseRecord(Fetcher.java:1268) at org.apache.kafka.clients.consumer.internals.Fetcher.access$3600(Fetcher.java:124) at org.apache.kafka.clients.consumer.internals.Fetcher$PartitionRecords.fetchRecords(Fetcher.java:1492) at org.apache.kafka.clients.consumer.internals.Fetcher$PartitionRecords.access$1600(Fetcher.java:1332) at org.apache.kafka.clients.consumer.internals.Fetcher.fetchRecords(Fetcher.java:645) at org.apache.kafka.clients.consumer.internals.Fetcher.fetchedRecords(Fetcher.java:606) at org.apache.kafka.clients.consumer.KafkaConsumer.pollForFetches(KafkaConsumer.java:1294) at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1225) at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1201) at br.com.link.ecommerce.KafkaService.run(KafkaService.java:36) at br.com.link.ecommerce.EmailService.main(EmailService.java:13) Caused by: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 2 path $ at com.google.gson.stream.JsonReader.nextString(JsonReader.java:826) at com.google.gson.internal.bind.TypeAdapters$16.read(TypeAdapters.java:402) at com.google.gson.internal.bind.TypeAdapters$16.read(TypeAdapters.java:390) at com.google.gson.Gson.fromJson(Gson.java:932) ... 16 more

1 resposta
solução!

Olá, Fernando

O erro Expected a string but was BEGIN_OBJECT at line 1 column 2 path $ ocorre quando o Gson (a biblioteca que você está usando para deserialização) espera uma string, mas está recebendo um objeto JSON.

Isso pode ocorrer se o formato dos dados que você está tentando deserializar não corresponder ao formato que o Gson espera. Por exemplo, se você está tentando deserializar um objeto JSON para uma classe Java que espera uma string, você receberá esse erro.

Para resolver este problema, você precisará verificar o formato dos dados que está recebendo e garantir que corresponda ao formato que o Gson espera. Se você estiver esperando uma string, mas estiver recebendo um objeto JSON, pode precisar alterar a classe Java que está usando para deserializar os dados para que ela espere um objeto JSON em vez de uma string.

Por exemplo, se você tem uma classe Email que tem um campo message que é uma string, mas os dados que você está recebendo tem message como um objeto JSON, você precisará alterar a classe Email para que message seja um objeto.

public class Email {
    // Antes
    private String message;

    // Depois
    private Message message;
}

Onde Message é uma nova classe que você criará para representar o objeto JSON.

public class Message {
    private String subject;
    private String body;
    // getters e setters
}

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software