Вам необходимо десериализовать строку в User
объекты. Я использовал Джексона ObjectMapper здесь (вы могли бы очень хорошо использовать других, таких как Gson).
ObjectMapper objectMapper = new ObjectMapper();
...
targetBr.lines()
.map(line -> {
try {
return objectMapper.readValue(line, User.class);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}).collect(Collectors.toList());
Часть потока map
занимает Function
, и, следовательно, вы не можете выбросить проверенное исключение оттуда. Следовательно, я обернул IOException
, который Джексон readValue
бросает (мог выбросить) в RuntimeException. Возможно, вам придется изменить эту часть в соответствии с вашими потребностями.
Это только начало. Подумайте о том, что делать, если существует недопустимая запись, которую нельзя десериализовать в User
. Некоторые конкретные угловые случаи:
- Что, если во входной строке есть нераспознанное поле (свойство, которого нет в классе User). ObjectMapper в этом случае генерирует исключение
UnrecognizedPropertyException
. Вы можете найти способы игнорировать это.
- Что делать, если в строке отсутствует одно или несколько полей в классе User ... Некоторые / все они обязательны ...?