我有一张这样的地图:
{
"user":
{
"name": "Jon Doe",
"age": "6",
"birthdate": {
"timestamp": 1456424096
},
"gender": "M"
}
}
和类似的功能
def setUser(user: Map[String, Any]): Map[String, Any]={
var usr = Map("name"-> user.get("name").getOrElse(""),
"gender" -> user.get("gender").getOrElse(""),
"age" -> user.get("age").getOrElse(""),
"birthday" -> patient.get("birthdate"))
return usr
}
我想在“生日”字段中映射“ timestamp”(1456424096)的值。
现在我有这个:一些%28%7Btimestamp%3D1456424096%7D%29
我对此很陌生。有人可以帮助我获得“时间戳”的价值吗?
答案 0 :(得分:0)
假设您只是想摆脱嵌套的生日(而不是嵌套的用户),它看起来可能像这样:
val oldData: Map[String, Any] = Map(
"user" -> Map(
"name" -> "John Doe",
"age" -> 6,
"birthday" -> Map("timestamp" -> 1234454666),
"gender" -> "M"
)
)
def flattenBirthday(userMap: Map[String, Any]) = Map(
"user" -> (userMap("user").asInstanceOf[Map[String, Any]] + (
"birthday" -> userMap("user").asInstanceOf[Map[String, Any]]("birthday").asInstanceOf[Map[String, Any]]("timestamp")
))
)
val newData = flattenBirthday(oldData)
但是,通常来说,处理嵌套的不可变地图会很丑陋。如果您从JSON中提取数据(如您的示例中所示),则最好使用一些库将该数据反序列化为case类对象。