我已經在Scala中看到過一些庫可以自動將任何支持成員類型的案例類自動序列化到JSON。(De)將對象自動序列化爲一個包
在Android世界中,我希望能夠通過Intent和Bundle來實現。
例子,我想生成該樣板代碼:
case class Ambitos(idInc: Long, idGrupo: String, ambitos: Map[String, Seq[String]])
def serialize(b: Bundle) {
b.putString("grupo", idGrupo)
b.putLong("inc", idInc)
b.putStringArray("ambitos", ambitos.keys.toArray)
ambitos.foreach { case (a, det) ⇒
b.putStringArray(a, det.toArray)
}
}
def serialize(b: Intent) {
b.putExtra("grupo", idGrupo)
b.putExtra("inc", idInc)
b.putExtra("ambitos", ambitos.keys.toArray)
ambitos.foreach { case (a, det) ⇒
b.putExtra(a, det.toArray)
}
}
}
object Ambitos {
def apply(b: Intent): Ambitos =
Ambitos(b.getLongExtra("inc", -1), b.getStringExtra("grupo"),
b.getStringArrayExtra("ambitos").map{ a ⇒ (a, b.getStringArrayExtra(a).toSeq) }.toMap)
def apply(b: Bundle): Ambitos =
Ambitos(b.getLong("inc"), b.getString("grupo"),
b.getStringArray("ambitos").map{ a ⇒ (a, b.getStringArray(a).toSeq) }.toMap)
}
確實存在這樣的庫或做我有我自己做呢?
爲了在活動之間傳遞複雜的信息並處理ActivityonSaveInstanceState()
和onRestoreInstanceState()
,這個工具非常棒。
這是一個簡單的替代方法,將序列化爲JSON,然後將結果字符串轉換爲捆綁包。我不確定,如果這是表現最好的。 – 2014-10-22 07:40:15
另一個好處是,相同的代碼用於從/到Intent和Bundle的序列化。 – 2014-10-27 08:16:30