package models import org.bson.types.ObjectId case class Food ( _id: String = "", val name: String, val glutenFree: Boolean = false, val vegitarian: Boolean = false, val vegan: Boolean = false, val nutrients: Map[String, Float], val source: String, val category: Seq[String], val primaryMeasure: Measure, val density: Float, val mass_p_u: Float, val price: Int, val alternatives: Seq[String] = Nil //val picture: Image ) object Food { import play.api.libs.json._ private def roundJsValue(jsval: JsValue, perc: Int): JsValue = { jsval match { case JsNumber(num) => JsNumber(num.setScale(perc, BigDecimal.RoundingMode.HALF_UP)) case JsArray(seq) => JsArray(seq.map(roundJsValue(_, perc))) case JsObject(map) => JsObject(map.mapValues(roundJsValue(_, perc))) case _ => jsval } } implicit val foodFormats = Format[Food]( Json.using[Json.WithDefaultValues].reads[Food], Json.using[Json.WithDefaultValues].writes[Food].transform(roundJsValue(_, 2)) ) }