3

Json4s、リフト、またはその他のライブラリを使用して、以下のクラスのオブジェクトをシリアル化することは可能ですか?

class User(uId: Int) extends Serializable {
  var id: Int = uId
  var active: Boolean = false
  var numTweets: Int = 0
  var followers: ArrayBuffer[Int] = null
  var following: ArrayBuffer[Int] = null
  var userTimeline: Queue[String] = null
  var homeTimeline: Queue[String] = null
  var userTimelineSize: Int = 0
  var homeTimelineSize: Int = 0
  //var notifications: Queue[String] = null
  var mentions: Queue[String] = null
  var directMessages: Queue[String] = null
}
4

1 に答える 1

4

この目的で Json4s を使用できます (の助けを借りて)。以下は、オブジェクトFieldSerializerのシリアル化を開始するためのコードです。User

def main(args: Array[String]) {
    import org.json4s._
    import org.json4s.native.Serialization
    import org.json4s.native.Serialization.{read, write, writePretty}

    implicit val formats = DefaultFormats + FieldSerializer[User]()

    val user = new User(12)

    val json = write(user)
    println(writePretty(user))
}

また、ケース以外のクラスでは、JSON にないものはすべてオプションにする必要があります。

別の方法は、 Gensonに行くことです:

def main(args: Array[String]) {
    import com.owlike.genson._
    import com.owlike.genson.ext.json4s._
    import org.json4s._
    import org.json4s.JsonDSL._
    import org.json4s.JsonAST._

    object CustomGenson {
      val genson = new ScalaGenson(
        new GensonBuilder()
        .withBundle(ScalaBundle(), Json4SBundle())
        .create()
      )
    }

    // then just import it in the places you want to use this instance instead of the default one
    import CustomGenson.genson._

    val user = new User(12)    

    val jsonArray = toJson(user)
    println(jsonArray)
}
于 2014-12-13T09:39:24.703 に答える