Я не могу правильно прочитать JSON с помощью библиотеки Gson - PullRequest
0 голосов
/ 05 марта 2020

Мне нужно прочитать json с помощью библиотеки Gson, но у меня есть Exception:

Исключение в ветке "main" com.google.gson.JsonSyntaxException: java .io.EOFException: конец ввода в строке 1, столбец 2, путь $.

Java class

class Data {

    public Data() {
    }

    int value;
    Data left, right, dad;

    public Data(int value, Data left, Data right) {
        this.value = value;
        this.left = left;
        this.right = right;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    public Data getLeft() {
        return left;
    }

    public void setLeft(Data left) {
        this.left = left;
    }

    public Data getRight() {
        return right;
    }

    public void setRight(Data right) {
        this.right = right;
    }

}

Следующий код демонстрирует, когда Я пытался построить объект из JSON

Gson gson = new Gson();
Scanner in = new Scanner(System.in);
System.out.println("put your json");
String json = in.next();
test = gson.fromJson(json, Data.class);

Json

 {
  "value": 1,
  "left": null,
  "right": {
    "value": 2,
    "left": {
      "value": 3,
      "left": null,
      "right": {
        "value": 7,
        "left": null,
        "right": null
      }
    },
    "right": {
      "value": 4,
      "left": {
        "value": 6,
        "left": null,
        "right": null
      },
      "right": {
        "value": 5,
        "left": null,
        "right": null
      }
    }
  }
}

Я не понимаю, что я сделал неправильно, пожалуйста, помогите я, кто может: D

1 Ответ

0 голосов
/ 05 марта 2020

in.next() будет читать одну строку. Вам нужно построить String из ВСЕХ линий.

Если вы поместите необработанный Json в жестком коде как String, это, вероятно, будет хорошо. И на этом сайте есть ответы на чтение нескольких строк из System.in, если вам нужно сделать это таким образом (хотя вам, вероятно, потребуется указать какой-либо способ указать, что вы закончили отправку данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...