Не получается записать корректное значение ENUM в поле объекта класса Java
Есть ENUM: public enum Color {GREEN,BLACK,BROWN;}
Его значение десериализуется из файла .json:
public class Parser {
public static ArrayList<LabWork> parse() {
Gson gson = new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTime_deserializer()).create();
ArrayList<LabWork> labWorkList = new ArrayList<>();
try(JsonReader reader = new JsonReader(new FileReader("C:/Users/vvvpe/lab_5/src/elements.json"))) {
JsonParser parser = new JsonParser();
reader.beginArray();
while(reader.hasNext()) {
JsonObject obj = JsonParser.parseReader(reader).getAsJsonObject();
LabWork lbwork = gson.fromJson(obj, LabWork.class);
if (Validator.checkName(lbwork.getName())&&
Validator.checkId(lbwork.getId())&&
Validator.checkDifficulty(lbwork.getDifficulty())&&
Validator.checkMinimalPoint(lbwork.getMinimalPoint())&&
Validator.checkCreationDate(lbwork.getCreationDate().toString())&&
Validator.checkCoordinates(lbwork.getCoordinates().getX())&&
Validator.checkAuthorName(lbwork.getAuthor().getName())&&
Validator.checkPassportId(lbwork.getAuthor().getPassportID())&&
Validator.checkColor(lbwork.getColor())&&
Validator.checkLocation(lbwork.getLocation().getX(), lbwork.getLocation().getY())) {
labWorkList.add(lbwork);
} else {
System.out.println("Объект имеет некорректные значения полей");
}
}
reader.endArray();
//Output_engine.importSuccess();
return labWorkList;
} catch (Exception e) {
e.printStackTrace();
System.out.println("Ошибка импорта из файла: ");
}
return null;
}
В этом коде интересует строчка кода с вызовом метода валидатора checkColor, вот этот метод:
public static boolean checkColor(Color eyeColor) {
if (Color.GREEN==eyeColor||Color.BROWN==eyeColor||Color.BLACK==eyeColor) {
System.out.println("Поле eyeColor задано успешно");
return true;
} else {
System.out.println("Введено некорректное значение eyeColor. Допускаются только GREEN, BROWN, BLACK");
return false;
}
}
Так вот, суть в том, что валидатор считает, что значение из файла не совпадает ни с одним из значений ENUM Color, хотя в файле значение указано корректно! Но, если я напишу код без использования валидатора значения из файла идеально десериализуются (объект запишется в коллекцию)!
public static ArrayList<LabWork> parse() {
Gson gson = new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTime_deserializer()).create();
ArrayList<LabWork> labWorkList = new ArrayList<>();
try(JsonReader reader = new JsonReader(new FileReader("C:/Users/vvvpe/lab_5/src/elements.json"))) {
JsonParser parser = new JsonParser();
reader.beginArray();
while(reader.hasNext()) {
JsonObject obj = JsonParser.parseReader(reader).getAsJsonObject();
LabWork lbwork = gson.fromJson(obj, LabWork.class);
labWorkList.add(lbwork);
}
reader.endArray();
//Output_engine.importSuccess();
return labWorkList;
} catch (Exception e) {
e.printStackTrace();
System.out.println("Ошибка импорта из файла: ");
}
return null;
}
Чем данная проблема может быть вызвана?