私はPlay Frameworkの最新バージョンを使用していますが、これはこのJson.toJson(obj)
のようなJSON libです。しかし、データの構造が不明であるため、toJsonはScalaオブジェクトをJSONに変換できません。誰かがcase convertの使用を提案しましたが、ここではmy Scalaナレッジデータはデータベースからのものですが、テーブルの構造は不明です。
このような不明なデータ構造をJSONに変換するには、どこを作成すればよいですか?
JSONにシリアル化する型の数が限られていることを考えると、これは機能するはずです。
object MyWriter {
implicit val anyValWriter = Writes[Any] (a => a match {
case v:String => Json.toJson(v)
case v:Int => Json.toJson(v)
case v:Any => Json.toJson(v.toString)
// or, if you don't care about the value
case _ => throw new RuntimeException("unserializeable type")
})
}
Any
をシリアル化するポイントで暗黙的な値をインポートすることにより、それを使用できます。
import MyWriter.anyValWriter
val a: Any = "Foo"
Json.toJson(a)
Json4sを使用すると、パッケージをインポートできます。
import org.json4s.DefaultFormats
import org.json4s.native.Serialization.write
次に、トレイト内に暗黙的な変数を作成します。
implicit val formats: DefaultFormats = DefaultFormats
そして最後に、メソッドでそれを使用します。
write(myObject)