JsonSyntaxException Gson: ожидался BEGIN_OBJECT, но был STRING

Прежде всего, если ваш enum имеет параметр, вы должны объявить конструктор с параметром:

public enum Numerals {
    DEUCE(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9), TEN(
            10), JACK(11), QUEEN(12), KING(13), ACE(14);
    private Numerals(int i) {
        this.value = i;
    }

    int value;
}

. Чтобы создать колоду yor, вы должны перебирать свои костюмы и цифры и создавать карту для каждой пары:

public Deck() {
    for (Suits s : Suits.values()) {
        for (Numerals n : Numerals.values()) {
            cards.add(new Card(s, n));
        }
    }
}

Из compareTo javadoc: сравнивает этот объект с указанным объектом для заказа. Возвращает отрицательное целое число, ноль или положительное целое число, так как этот объект меньше, равен или больше указанного объекта.

Итак, вы должны объявить заказ для вашего класса карты реализовать сравните (используя ординалы)

public int compareTo(Card o) {
    if(this.suit.ordinal() == o.suit.ordinal()){
        return this.numeral.ordinal() - o.numeral.ordinal();
    }
    return this.suit.ordinal() - o.suit.ordinal();
}

Надеюсь, что это поможет.

PS: будьте осторожны, переопределяя метод равенства , посмотрите здесь

0
задан Mukesh Prajapati 6 March 2019 в 02:08
поделиться

1 ответ

Это потому, что ваша JSON полезная нагрузка выглядит следующим образом:

"{"username": "abc@gmail.com","address": "!Earth"}

Обратите внимание на " в начале. Когда вы удалите первый ", он начнет работать. Обратите внимание на следующие строки:

System.out.println("\"{}\"");
System.out.println("{}");

напечатайте:

"{}"
{}

РЕДАКТИРОВАТЬ

System.out.println("Start point: " + json);
json = json.substring(1, json.length() - 1);
System.out.println("Get without \": " + json);
json = json.replaceAll("\\\\\"", "\"");
System.out.println("Valid: " + json);

Gson gson = new Gson();
User user = gson.fromJson(json, User.class);

System.out.println(user);

Над кодом напечатаны:

[114 ]

См. Также:

0
ответ дан Michał Ziober 6 March 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: