Small Example of Jackson Scala Module?

前端 未结 3 1729
轮回少年
轮回少年 2020-12-05 06:34

Can anyone point me towards a simple example of Jackson serialization/deserialization with their Scala module for 2.10? I\'m looking for reflection-based JSON not requiring

3条回答
  •  攒了一身酷
    2020-12-05 07:36

    I have created a generic function to convert JSON String to Case Class/Object and Case Class/Object to JSON String.

    SBT Dependencies required in build.sbt file:

    name := "jackson-example"
    
    scalaVersion := "2.12.11"
    
    libraryDependencies += "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.10.1"
    libraryDependencies += "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.1"
    

    JSON String to Case Class/Object

    def fromJson[T](json: String)(implicit m: Manifest[T]): Option[T] = {
        Try {
          lazy val mapper = new ObjectMapper() with ScalaObjectMapper
          mapper.registerModule(DefaultScalaModule)
          mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
          mapper.readValue[T](json)
        } match {
          case Success(x) => Some(x)
          case Failure(err) => {
            logger.error("@@@@Got " + err.getMessage() + " while JSON to Object:--> " + json)
            None
          }
        }
      }
    

    Case Class/Object to JSON String

    def toJson[T](obj: T)(implicit m: Manifest[T]): Option[String] = {
        Try {
          lazy val mapper = new ObjectMapper() with ScalaObjectMapper
          mapper.registerModule(DefaultScalaModule)
          mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
          mapper.writeValueAsString(obj)
        } match {
          case Success(x) => Some(x)
          case Failure (err) => {
            logger.error("@@@@Got " + err.getMessage() + " while converting object  to JSON:--> " + obj)
            None
          }
        }
      }
    

提交回复
热议问题