Da ich mit generischen Typ beschäftigen, daher kann ich nicht bestimmte Fallklassen verwenden. Dann habe ich ein generisches Util erstellt, das generische Objekte serialisiert und deserialisiert.json4s serialisieren und deserialisieren generischen Typ
import org.json4s
import org.json4s.Formats._
import org.json4s.native.JsonMethods._
object JsonHelper {
def json2Object[O](input: String) : O = {
parse(json4s.string2JsonInput(input)).asInstanceOf[O]
}
def object2Json[O](input: O) : String = {
write(input).toString
}
}
Der Compiler führt den Fehler:
No JSON serializer found for type O. Try to implement an implicit Writer or JsonFormat for this type. write(input).toString
Dies sollte zur Laufzeit geworfen werden, aber warum es bei der Kompilierung geworfen?
Wie läuft es in Ihrem Kopf? Wenn 'O' etwas sein kann, wie wird Json4s dann wissen, was in allen Fällen zu tun ist? Ihre 'write (input)' Sache wird funktionieren, solange ein Writer oder ein JsonFormat für O definiert ist. Zur Kompilierzeit wird das nicht gefunden – mfirry
@mfirry So, wie kann jackson mit Java-Objekten arbeiten? Es verwendet Reflexion richtig? Und warum unterscheidet es sich von Scala? –