Я не совсем уверен, понимаю ли я, каков ваш настоящий вопрос ...
Вы получаете Java.lang.RuntimeException: Unable to parse MyClass json: LeftProjection(Left(String: CursorHistory(List())))
, потому что это то, что делает sys.error
.
Когда вы используетеметод Parse.decodeEither
, результирующий тип - Either[String, MyClass]
.Есть много способов проверить или работать с любым из них.Один из них, который вы уже используете: проверяет, является ли результат с обеих сторон и действует на его основе.
Хотя более идиотский подход заключается в его сворачивании:
parsed.fold(
error => //do something with error,
myclass => //do something with myclass
)
Из Scala 2.12, Either
- это монада, ориентированная на правую сторону, что означает, что вы можете использовать ее для понимания, которое будет отображаться с правой стороны.Я думаю, что чтение его документов могло бы помочь.