J'essaie d'utiliser Circe pour faire de l'encodage JSON comme suit :
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)
}
Idéalement, j'aimerais obtenir le résultat suivant :
{"name":"John"}
{"name":"Tania","nickname":"Awesome"}
Comment puis-je faire en sorte que l'encodeur saute le nickname
dans le cas où la valeur du champ est None
?