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 MessageType
Alternatively 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