The structure of this project is hugely inspired by scalapb-json4s
Artifacts are available for Scala 2.11 and 2.12
Include in your build.sbt file
libraryDependencies += "com.whisk" %% "scalapb-playjson" % "0.2.1"There are four functions you can use directly to serialize/deserialize your messages:
JsonFormat.toJsonString(msg) // returns String
JsonFormat.toJson(msg): // returns JsObject
JsonFormat.fromJsonString(str) // return MessageType
JsonFormat.fromJson(json) // return MessageTypeAlternatively you can define play-json Reads[T], Writes[T] or Format[T] and use serialization implicitly
import play.api.libs.json._
implicit val myMsgWrites: Writes[MyMsg] = JsonFormat.writes[MyMsg]
implicit val myMsgReads: Reads[MyMsg] = JsonFormat.reads[MyMsg]
implicit val myMsgFmt: Format[MyMsg] = JsonFormat.format[MyMsg]There are helper methods for enums as well if necessary
JsonFormat.enumReads
JsonFormat.enumWrites
JsonFormat.enumFormat