有一个http响应,它是一个JSON字符串
{"id":"12345","dob":"01\/01\/1991","first_name":"Joe","gender":"male"}
需要将其实例化为此类
case class UserRow(id: Long, firstName: String, lastName: String, dob: Long, gender: String)
我尝试将JSON解析为地图
val result = parseFull(response)
println(result)
输出
Some(Map(dob -> 01/01/1991, id -> 12345, first_name -> Joe, gender -> male))
试图获得
map.get("id").toString().toLong //Throws a NumberFormatException
Dob应转换为Long类型的millis(EPOC)。感谢帮助
答案 0 :(得分:2)
基本答案 您可以使用https://github.com/json4s/json4s或其他JSON-lib。并使用序列化器。
我需要调整JSON和案例类的某些部分。
要处理 dob 字段中的时间,您可以尝试使用此扩展程序:
// Joda时间 隐式val格式= org.json4s.DefaultFormats ++ org.json4s.ext.JodaTimeSerializers.all
一些代码示例
import org.json4s._
import org.json4s.native.Serialization
implicit val formats = Serialization.formats(NoTypeHints)
val jsonExample = """{"id":12345,"firstName":"Joe","gender":"male"}"""
case class UserRow(id: Long, firstName: String, lastName: Option[String], dob: Option[Long], gender: String)
使用示例
scala> Serialization.read[UserRow](jsonExample)
res5: UserRow = UserRow(12345,Joe,None,None,male)
扩展答案
提供的JSON会导致几个问题,只能使用手工解串器https://github.com/json4s/json4s#serialization来解决