Yulets
@Yulets
21 год, Нижний Новгород

Проблемы с чтением JSON файла. Как избавиться от «Lexical Error: Unmatched Input.»?

Всем доброго урмени суток:)Помогите, пожалуйста, разобраться с ошибкой, всю голову сломала. Имеется JSON файл с вот таким содержимым(Только объектов в массиве 30, не стану сюда все запихивать).
{
   «FileName»:«student»,
   «Students»: [
   {
       «ID»: «1»,
       «Fio»: «Акулеев Кирилл Андреевич»,
       «Group»: «16-IVT-2»,
       «Num»: 10
   },
   {
       «ID»: 2,
       «Fio»: «Алексейчик Андрей Александрович»,
       «Group»: «16-IVT-2»,
      «Num»: 11
    } 
   ]
}

Второй день я безуспешно пытаюсь его читать при помощи функций библиотеки json-simplе и перечитываю кучу сайтов по тематике. Сейчас мой код выглядит так и выкидывает ошибку "java.lang.Error: Lexical Error: Unmatched Input."
public static void main(String[] args)  throws  FileNotFoundException,
            IOException, Exception {
        JSONParser parser = new JSONParser();
        Object Students = parser.parse(new FileReader("/Users/yuliavorobjeva/Desktop/Students.JSON"));
        JSONObject jsonStudents = (JSONObject) Students;
        String FileName = (String) jsonStudents.get("FileName");
        System.out.printf("%s", FileName);
        JSONArray people = (JSONArray)jsonStudents.get("Students");
        for(Object o: people){
            JSONObject person= (JSONObject)o;
            int Id = (int)person.get("ID");
            String name = (String) person.get("Fio");
            String  group = (String) person.get("Group");
            int num = (int) person.get("Num");
        }


    }

Как я понимаю, я сначала читаю строку "FileName", а затем пытаюсь читать массив.Ошибку в упор не вижу:с. Помогите, пожалуйста, разобраться, в чем конкретно я ошибаюсь и как исправить. Заранее спасибо:)
  • Вопрос задан
  • 276 просмотров
Решения вопроса 2
Кавычки должны быть ", а не «»
Ответ написан
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
1) Как выше подметили кавычки не те.
2) При чтении текстового файла учитывай кодировку файла и какой кодировкой пытаешься читать.
3) Вместо json-simple лучше используй google gson, смотри как просто выйдет:
public static void main(String[] args) {
        Gson gson = new GsonBuilder().create();
        Students students= gson.fromJson("тут прочитанный жсон как строка", Students.class);
    }
    
    public class Students{
        private String FileName;
        private Person Students[];

        public Students(String FileName, Person[] Students) {
            this.FileName = FileName;
            this.Students = Students;
        }
         //Геттеры сам добавишь по вкусу
    }
    public class Person{
        private int ID;
        private String Fio;
        private String Group;
        private int Num;
       
        public Person(int ID, String Fio, String Group, int Num) {
            this.ID = ID;
            this.Fio = Fio;
            this.Group = Group;
            this.Num = Num;
        }
        //Геттеры сам добавишь по вкусу
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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