Я пытаюсь использовать Circe для выполнения некоторой кодировки JSON следующим образом:
import io.circe.{Encoder, Json}
import io.circe.syntax._
case class Person(name: String, nickname: Option[String] = None)
object EncodingTest extends App {
val persons = List (Person("John", None), Person("Tania", Some("Awesome")))
implicit val encodePerson: Encoder[Person] = (p: Person) => {
Json.obj(
("name", Json.fromString(p.name)),
("nickname", Json.fromString(p.nickname.getOrElse(""))) // <- Problem is here
)
}
for(person <- persons)
println(person.asJson)
}
В идеале я хотел бы получить следующий вывод:
{"name":"John"}
{"name":"Tania","nickname":"Awesome"}
Как можно Я заставляю кодировщик пропускать поле nickname
в случае, если значение поля равно None
?