Как использовать gson для преобразования данных json в объект java?

У меня есть строка json. Я хочу преобразовать его в объект Java. Мой класс сущности Deneme.java.

Result переменная хранит json строку. Как я могу сделать этот процесс?

Я получаю сообщение об ошибке: Expected BEGIN_OBJECT but was BEGIN_ARRAY

Данные, поступающие с сервера,

 {"games":
       [   
            {"game":"Football","probability":0.74656546},
            {"game":"Football","probability":0.23432424},
            {"game":"Football","probability":0.2342342343}
       ]
 }

Deneme.java есть,


import com.google.gson.JsonObject;
import org.json.JSONArray;

import java.util.List;

public class Deneme {

    private List<JsonObject> matches;

    public List<JsonObject> getMatches() {
        return matches;
    }

    public void setMatches(List<JsonObject> matches) {
        this.matches = matches;
    }
}

Мой код:

Gson gson = new Gson();
Deneme obj = gson.fromJson(result, Deneme.class);

что получится, вставьте полный код конвертации

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

Ответы 2

У вас должно быть то же имя, когда вы конвертируете в Deneme

Изменять,

private List<JsonObject> matches;

К,

private List<JsonObject> games;

Я получаю сообщение об ошибке: Несовместимые типы. Требуется Deneme, но «fromjson», но выведенный для T. Нет экземпляров переменных типа.

sneijder10 19.04.2019 13:38
Ответ принят как подходящий

С вашей текущей структурой вы можете использовать что-то вроде:

    public class Deneme {

        private List<JsonObject> games;

        public List<JsonObject> getMatches() {
            return games;
        }

        public void setMatches(List<JsonObject> games) {
            this.games = games;
        }
    }

    public static void main(String[] args) {

        Deneme deneme = new Gson().fromJson(json, Deneme.class);

        deneme.getMatches().forEach(System.out::println);
    }

Вы должны изменить private List<JsonObject> matches на private List<JsonObject> games.

Результат:

{"game":"Football","probability":0.74656546}
{"game":"Football","probability":0.23432424}
{"game":"Football","probability":0.2342342343}

Я думаю, что в вашем случае было бы лучше создать класс Game и хранить список объектов Game внутри вашего класса Deneme, потому что теперь вы просто храните JsonObject.

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