Вопрос:

Scala: импортированный объект scala с неявными значениями, не поддерживающими формат чтения или записи (play json)

json scala play-json

42 просмотра

1 ответ

1032 Репутация автора

У меня есть некоторый scala-код, который требует использования имплицитов для сериализации и десериализации json.

Ранее у нас было что-то, что работало, помещая эти неявные утверждения (упрощенные с помощью манекенов):

  (in some class SomeClass1)

  implicit val some1format = Json.format[SomeItem1]
  implicit val some2format = Json.format[SomeItem2]
  ...

Все как переменные уровня класса. Любой метод в пределах класса был тогда в состоянии преобразовать из Json просто отлично.

Однако мы пытаемся перенести неявные определения этих форматов в отдельный объект.

Итак, мы создали объект (например: SomeFormatters), который содержит только эти следствия:

object SomeFormatters {
   implicit val some1format = Json.format[SomeItem1]
   implicit val some2format = Json.format[SomeItem2]
}

Когда я пытаюсь импортировать этот объект в SomeClass1, я получаю ошибку компиляции, говорящую, что не был найден десериализатор для SomeItem1 или SomeItem2, хотя я импортирую SomeFormatters. (В IDE говорится, что импорт SomeFormatters не используется, поэтому я уже знал, что что-то не так.)

Как правильно узнать SomeClass1 о неявных определениях в SomeFormatters?

Автор: Felix Источник Размещён: 08.11.2017 11:46

Ответы (1)


0 плюса

1032 Репутация автора

Проблема заключалась в том, что не было аннотаций типов для неявных значений -

Вместо:

implicit val some1format = Json.format[SomeItem1]

Мне нужно было поставить:

implicit val some1format: Format[SomeItem1] = Json.format[SomeItem1]
Автор: Felix Размещён: 08.11.2017 11:56
Вопросы из категории :
32x32