Если вы ожидаете получить Json типа A
или типа B
(Either[A, B]
), как вы могли бы написать для него декодер?
Например, давайте скажем, вы создаете клиент для внешнего API, который может ответить с некоторой ожидаемой структурой Json:
{
"fieldA": "value",
"fieldB": "value2"
}
или, если что-то не получится, он ответит объектом с полем error
:
{
"error": "Your request was wrong"
}
И затем вы хотите иметь экземпляр с любой из этих структур:
val response: String = // Response from the server
val decodedValue =
decode[Either[ErrorResponse, ExpectedResponse](response) // (...) <- What implicit to place here?
Как вы можете написать декодер для одной структуры ответа или другой?