Ich bin es gewohnt, mit sacla spray-json JSON-Daten zu serialisieren und zu deserialisieren. Aber es hat mich für eine lange Zeit ein Problem verwirren: die json Daten Angenommen ist:Scala Spray-JSON Typ übereinstimmen
{"a":"123"}
aber manchmal kann es sein:
{"a":123} or {"a":123.0}
Problem ist, dass ich die Daten nicht konw im Voraus eingeben, kann es String oder Int oder Doule sein.
Bei Verwendung von Spray-Json-Framework muss ich das Datenformat im Voraus bestimmen. Unten ist mein Code:
case class Input(a:Either[String,Numeric[Either[Int,Doule]]])
object SelfJsonProtocol extends DefaultJsonProtocol {
// format the json type into scala type.
implicit val InputFormat = jsonFormat1(Input)
}
Aber das war falsch, wenn es kompilieren. Kann mir jemand helfen?
Warum Sie nicht nur den Datentyp definieren doppelt zu sein und jeden Wert konvertieren, die zu verdoppeln kommt? –
@RameshMaharjan, Aus irgendeinem externen Grund kann ich den Dateityp nicht vorher bestimmen. – Yang
müssen Sie den Datentyp nicht kennen. Definieren Sie Ihre Fallklasse als doubleType und parsen Sie den Wert, um sonst 0,0 zu erhalten. –