Как преобразовать ответ в объект моего класса?

Я пытаюсь преобразовать строку ответа в объект Java (класса Temp) для дальнейшего манипулирования, но получаю ошибку ниже:

    Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 3 path $
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
        at com.google.gson.Gson.fromJson(Gson.java:963)
        at com.google.gson.Gson.from

import com.google.gson.*;

class Temp {
    String name = "";
    int age = 0;
    String city = "";
}

class Scratch {
    public static void main(String[] args) {
        String response = " '{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}' ";
    
        //convert response to Temp object
        Gson g = new Gson();

        Temp t = g.fromJson(response, Temp.class);
        System.out.println(t.age);
    }
}

ответ уже представляет собой строку JSON. Почему я не могу преобразовать его в объект Temp Class?

«ответ уже представляет собой строку JSON». - Нет это не так. Действительный документ JSON не начинается с '.

Turing85 30.05.2024 13:19

Сообщение об ошибке могло бы быть более полезным: «было STRING в строке 1, столбце 3» мало о чем говорит.

k314159 30.05.2024 17:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Строка вашего ответа начинается с ', а этого не должно быть. Также отмечу, что в той же строке есть ненужные пробелы.

Ваша строка ответа должна быть следующей:

String response = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";  
Ответ принят как подходящий

В самом ответе JSON есть ошибка. Строка ответа содержит дополнительные пробелы и одинарные кавычки, что не соответствует формату JSON.

Рассмотрим следующий исправленный код.

import com.google.gson.*;

class Temp {
    String name = "";
    int age = 0;
    String city = "";
}

class Scratch {
    public static void main(String[] args) {
        String response = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
    
        //convert response to Temp object
        Gson g = new Gson();

        Temp t = g.fromJson(response, Temp.class);
        System.out.println(t.age);
    }
}

Другие вопросы по теме