Mám nejaký kód na konverziu json reťazca na objekty, ako napríklad:
def apply(line: String): PairEvent = {
val (name, json) = line.span(_ != " ")
name match {
case "OpenTabEvent" => Serialization.read[OpenTabEvent](json)
case "CloseTabEvent" => Serialization.read[CloseTabEvent](json)
case "ChangeContentEvent" => Serialization.read[ChangeContentEvent](json)
case "ChangeMasterRequest" => Serialization.read[ChangeMasterRequest](json)
case "CreateFileEvent" => Serialization.read[CreateFileEvent](json)
case "DeleteFileEvent" => Serialization.read[DeleteFileEvent](json)
case "CreateDirEvent" => Serialization.read[CreateDirEvent](json)
case "DeleteDirEvent" => Serialization.read[DeleteDirEvent](json)
case "WatchingFiles" => Serialization.read[WatchingFiles](json)
case _ =>
ServerLogger.info("!!!!!!!!!!!!!!!!!!!!! unknown line from server: " + line)
???
}
}
Môžete vidieť, že som hardcoded niektoré reťazce a použiť ich ako typy previesť na objekty.
Existuje nejaký spôsob, ako urobiť to isté bez ich hardcode? Nie som si istý, či je to možné, dokonca aj s makro.
odpovede:
0 pre odpoveď č. 1Môžete použiť názov triedy:
case OpenTabEvent.getClass.getSimpleName => Serialization.read[OpenTabEvent](json)