Есть две проблемы:
Когда вы определяете jsonFormat2(PaginatedSearchResult.apply)
, вы пропускаете неявное значение типа RootJsonFormat[T]
, как это требуется в вашем методе constructor / apply.Компилятор не может знать это для любого T
и выдает ошибку
Error:(15, 59) could not find implicit value for evidence parameter of type spray.json.RootJsonFormat[T]
Вы можете исправить это, определив формат как def
implicit def format[T: RootJsonFormat] = jsonFormat2(PaginatedSearchResult.apply)
Вторая проблема - это место, гдевам требуется использовать формат
Unmarshal(response.entity).to[PaginatedSearchResult[T]]
В этом случае вы должны использовать конкретный T
или иметь RootJsonFormat[T]
доступный в неявном объеме.
Вы можете сделать это
def unmarshal[T: RootJsonFormat] = {
Unmarshal(response.entity).to[PaginatedSearchResult[T]]
}
И используйте его как unmarshal[User]
, если у вас есть тип User
, например.