2016-01-28 148 views
0

我有JSON的格式如下:反序列化JSON与JSON4S

{ 
    "id": 1913548255, 
    "notification": "NotificationReceived", 
    "deviceGuid": "e60d6085-2aba-48e9-b1c3-73c673e414be", 
    "timestamp": "2016-01-28T20:34:34.167", 
    "parameters": { 
    "jsonString": "{\"mac\":\"bc6a29abd973\",\"uuid\":\"f000aa1104514000b000000000000000\",\"value\":0.27328648477047685}" 
    } 
} 

我想反序列化得到以下类,使:

case class Parameters(mac: String, uuid: String, value: Double) 
case class Notification(id: BigInt, notification: String, deviceGuid: String, timestamp: String, perameters: Parameters) 

我知道我需要写CustomSerializer。但我没有太多经验。请引导我。感谢帮助。

回答

0

我决定不去处理反序列化器,而是用普通的方法处理。我张贴代码,以便它可以帮助某人。

case class Parameters(mac: String, uuid: String, value: Double) 
case class Notification(id: Int, notification: String, deviceGuid: String, timestamp: String, parameters: Map[String, String]) 
case class FinalNotification(id: Int, notification: String, device_guid: String, timestamp: String, mac: String, uuid: String, value: Double) 

implicit val formats = DefaultFormats 
val n = parse(v).extract[Notification] 

def convertJson(json: Option[String]): Parameters = json match { 
    case None => throw new IllegalArgumentException("Json can't be converted. ") 
    case Some(j) => parse(j).extract[Parameters] 
} 

val param = convertJson(n.parameters.get("jsonString")) 

FinalNotification(n.id, n.notification, n.deviceGuid, n.timestamp, param.mac, param.uuid, param.value)