¿Cómo representar campos opcionales en spray-json?

Tengo un campo opcional en mis solicitudes:

case class SearchRequest(url: String, nextAt: Option[Date])

Mi protocolo es:

object SearchRequestJsonProtocol extends DefaultJsonProtocol {
    implicit val searchRequestFormat = jsonFormat(SearchRequest, "url", "nextAt")
}

¿Cómo se marca el campo nextAt opcional, de manera que los siguientes objetos JSON se lean y acepten correctamente?

{"url":"..."}
{"url":"...", "nextAt":null}
{"url":"...", "nextAt":"2012-05-30T15:23Z"}

En realidad no me importa el caso nulo, pero si tiene detalles, sería bueno. Estoy usando spray-json, y tuve la impresión de que usar una opción omitiría el campo si no estuviera en el objeto JSON original.

Respuestas a la pregunta(6)

Su respuesta a la pregunta