你只需要做阅读器,如果 Json 满足你的对象(它具有你对象的所有属性,如果有更多也没关系),那么你可以做一个简单的阅读器(或者如果你想要它的格式读和写)。示例:
case class VehicleForList(
id: Int,
plate: String,
vehicleTypeName: String,
vehicleBrandName: String,
vehicleBrandImageUrl: Option[String],
vehicleColorName: String,
vehicleColorRgb: String,
ownerName: String,
membershipCode: Option[String],
membershipPhone: Option[String]
)
object VehicleForList {
implicit val vehicleForListFormat: Format[VehicleForList] = Json.format[VehicleForList]
}
如果您需要更复杂的对象来处理对象,那么您可以手动创建阅读器:
case class VehicleForEdit(
id: Int,
plate: String,
ownerName: Option[String],
membershipId: Option[Int],
vehicleTypeId: Int,
vehicleBrandId: Int,
vehicleColorId: Int
)
object VehicleForEdit {
implicit val vehicleForEditReads: Reads[VehicleForEdit] = (
(__ \ "id").read[Int] and
(__ \ "plate").readUpperString(plateRegex) and
(__ \ "ownerName").readNullableTrimmedString(defaultStringMinMax) and
(__ \ "membershipId").readNullable[Int] and //This field is optional, can be or not be present in the Json
(__ \ "vehicleTypeId").read[Int].map(_.toString) and // Here we change the data type
(__ \ "vehicleBrandId").read[Int] and
(__ \ "vehicleColorId").read[Int]
)(VehicleForEdit.apply _)
}