in membership-common/src/main/scala/com/gu/memsub/subsv2/reads/CommonReads.scala [33:41]
override def reads(json: JsValue): JsResult[List[A]] = json match {
case JsArray(items) =>
items.map(_.validate[A]).partition(_.isSuccess) match {
case (successes, errors) if successes.nonEmpty || errors.isEmpty =>
(successes.toList: List[JsResult[A]]).sequence[JsResult, A]
case (successes, errors) if successes.isEmpty => JsError(errors.mkString)
}
case _ => JsError(s"Failed to read $json as a list")
}