ジェネリック型を扱っているため、特定のケースクラスを使用できません。次に、汎用オブジェクトをシリアライズしてデシリアライズする汎用ユーティリティを作成しました。json4sジェネリック型をシリアライズしてデシリアライズ
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
}
}
コンパイラはエラーをスロー:
No JSON serializer found for type O. Try to implement an implicit Writer or JsonFormat for this type. write(input).toString
これは、実行時にスローされる必要がありますが、それはコンパイル時にスローされますなぜですか?
あなたの心の中でどのようなことが起こりますか? 「O」が何かになる可能性がある場合、json4はどのようにすべての場合に何をすべきかを知ることになるでしょうか? WriterやJsonFormatがOに対して定義されている限り、あなたの 'write(input) 'のことは動作します。コンパイル時にこれは見つけられません。 – mfirry
@mfirryしたがって、jacksonがJavaオブジェクトで動作する方法は? 反射権を使用していますか?なぜScalaと異なるのですか? –