@@ -62,8 +62,12 @@ trait CirceSchema extends CirceProductSchema {
6262 }
6363
6464 implicit val DateFormat : Encoder [Date ] with io.circe.Decoder [Date ] = new io.circe.Encoder [Date ] with io.circe.Decoder [Date ] {
65- override def apply (a : Date ): Json = {
66- Encoder .encodeString.apply(a.toInstant.toString)
65+ override def apply (d : Date ): Json = {
66+ Option (d)
67+ .map(
68+ date => Encoder .encodeString.apply(date.toInstant.toString)
69+ )
70+ .getOrElse(Json .Null )
6771 }
6872
6973 override def apply (c : HCursor ): Result [Date ] = {
@@ -76,8 +80,12 @@ trait CirceSchema extends CirceProductSchema {
7680 }
7781
7882 implicit val DateTimeFormat : Encoder [DateTime ] with io.circe.Decoder [DateTime ] = new io.circe.Encoder [DateTime ] with io.circe.Decoder [DateTime ] {
79- override def apply (a : DateTime ): Json = {
80- Encoder .encodeString.apply(a.toInstant.toString)
83+ override def apply (d : DateTime ): Json = {
84+ Option (d)
85+ .map(
86+ date => Encoder .encodeString.apply(date.toInstant.toString)
87+ )
88+ .getOrElse(Json .Null )
8189 }
8290
8391 override def apply (c : HCursor ): Result [DateTime ] = {
@@ -90,8 +98,12 @@ trait CirceSchema extends CirceProductSchema {
9098 }
9199
92100 implicit val ObjectIdFormat : Encoder [ObjectId ] with io.circe.Decoder [ObjectId ] = new io.circe.Encoder [ObjectId ] with io.circe.Decoder [ObjectId ] {
93- override def apply (a : ObjectId ): Json = {
94- Encoder .encodeString.apply(a.toHexString)
101+ override def apply (o : ObjectId ): Json = {
102+ Option (o)
103+ .map(
104+ o => Encoder .encodeString.apply(o.toHexString)
105+ )
106+ .getOrElse(Json .Null )
95107 }
96108
97109 override def apply (c : HCursor ): Result [ObjectId ] = {
0 commit comments