私は Scalatra と Squeryl を使用してシングル ページ アプリケーションの例を作成しているため、常に JSON を返す Scalatra サーブレットが必要です。関係のないオブジェクトをシリアル化するときに完全に機能します。
クラス City と ManyToOne 関係を持つクラス Address があります。
class City(val id: Long, val name: String) extends KeyedEntity[Long] {
def this() = this(0, "")
}
class Address(val id: Long, val street: String, val number: Int, val city_id: Long)
extends KeyedEntity[Long] {
def this() = this(0, "", 0, 0)
lazy val city = SpaDb.cities2Addresses.rightStateful(this)
}
object SpaDb extends Schema {
val cities = table[City]("cities")
val addresses = table[Address]("addresses")
val cities2Addresses = oneToManyRelation(cities, addresses).via(_.id === _.city_id)
}
そして、それは私のサーブレットです:
class SpaServlet extends SpaStack with JacksonJsonSupport {
before() {
contentType = formats("json")
}
get("/addresses") {
Address.all //return all addresses
}
}
サーブレットがオブジェクト Address をシリアライズするとき、すべての属性をシリアライズしますが、関係はシリアライズしません。結果は次のとおりです。
{"id":1,"street":"Street 1","city_id":1}
そして、私が受け取りたいのは:
{"id":1,"street":"Street 1","city_id":1, "city": {"id":1,"name":"MyCity"}}
この方法でjsonを作成するにはどうすればよいですか?