Я хотел бы проанализировать файл Json
, чтобы прочитать значения, которые могут быть предоставлены необязательно. На случай, если они не будут предоставлены, у меня есть значения по умолчанию, к которым можно вернуться.
Очевидно, что в этом случае конечным результатом будет то, что у меня обязательно будет значение под рукой: либо считанное из Json
, либо значение по умолчанию. Однако, согласно моим текущим знаниям о ScalaJson
(пожалуйста, поправьте меня, если я ошибаюсь неправильно), мне все равно придется использовать Option[T]
для его хранения (поскольку он может быть недоступен непосредственно в файле Json
). Другими словами, я считаю, что, несмотря на то, что я могу указать значение по умолчанию, его все равно придется обернуть в Option[T]
Есть ли способ прочитать необязательное значение (со значением по умолчанию) без необходимости оборачивать его внутрь Option[T]
? Хочу заранее сообщить, что у меня нет необходимости (в обозримом будущем) записывать (сериализовать) мои данные в Json
, мне нужно только прочитать их (deserialize
) через Json
.
Чтобы уточнить мой вопрос: -
Я использую автоматическое преобразование с использованием case class
es , поэтому вместо использования этого case class
с заданным reads
converter
case class MyCaseClass(optString: Option[String] = Some("None"))
implicit val reads = Json.reads[MyCaseClass]
Я хотел бы использовать это case class
case class MyCaseClass(optStringWithDefault: String = "None")
Можно ли написать read converter
для этого case class
с тем же источником Json
? В качестве альтернативы, есть ли лучший выбор дизайна, который может полностью решить эту проблему?
I'm on
Scala 2.11.11
PlayFramework 2.6
Reads
: github.com/playframework/play-json/blob/2.6.7/play-json/shared/ - person cchantep   schedule 26.02.2018Play 2.6.x
, как рассказал @Aliaksandr Kavalevich - person y2k-shubham   schedule 27.02.2018