我已经在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