jsoniter-scala
Codecs for jsoniter-scala.
libraryDependencies += "africa.shuwari" %% /* or `%%%` */ "version-codecs-jsoniter" % "0.6.2"
Usage
import com.github.plokhotnyuk.jsoniter_scala.core.*
import com.github.plokhotnyuk.jsoniter_scala.macros.*
import version.*
import version.codecs.jsoniter.given
// Encode
val v = "1.2.3-alpha.1".toVersionUnsafe
val json = writeToString(v) // "1.2.3-alpha.1"
// Decode
val decoded = readFromString[Version](json)
// Version(1, 2, 3, Some(alpha.1), None)
In Data Structures
case class Package(name: String, version: Version)
object Package:
given JsonValueCodec[Package] = JsonCodecMaker.make
val pkg = Package("my-lib", "1.0.0".toVersionUnsafe)
writeToString(pkg)
// {"name":"my-lib","version":"1.0.0"}
Provided Codecs
given JsonValueCodec[Version]
given JsonValueCodec[MajorVersion]
given JsonValueCodec[MinorVersion]
given JsonValueCodec[PatchNumber]
given JsonValueCodec[PreReleaseNumber]
given JsonValueCodec[PreReleaseClassifier]
given JsonValueCodec[PreRelease]
given JsonValueCodec[Metadata]
Error Handling
import scala.util.Try
Try(readFromString[Version]("invalid"))
// Failure(JsonReaderException: ...expected '"'...)
Try(readFromString[Version]("\"not-a-version\""))
// Failure(JsonReaderException: ...invalid version...)
In this article