Не получается записать корректное значение 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;
}

Чем данная проблема может быть вызвана?


Ответы (0 шт):