web-dev-qa-db-ja.com

Play Framework-JSONオブジェクトにフィールドを追加します

Scalaを使用してPlay FrameworkのJsonオブジェクトにフィールドを追加する際に問題があります。

データを含むケースクラスがあります。例えば:

case class ClassA(a:Int,b:Int)

json Writesを使用してJsonオブジェクトを作成できます。

val classAObject = ClassA(1,2)
implicit val classAWrites= Json.writes[ClassA]
val jsonObject = Json.toJson(classAObject)

jsonは次のようになります。

{ a:1, b:2 }

Jsonオブジェクトに追加の 'c'フィールドを追加したいとします。結果:

{ a:1, b:2, c:3 }

新しいケースクラスを作成したり、Json.objを使用して自分でJsonオブジェクトを作成したりせずに、どうすればよいですか?私は次のようなものを探しています:

jsonObject.merge({c:3}) 

どんな助けも感謝します!

35

自分で解決策を見つけました。実際、Json.toJsonの戻り値型であるJsValueにはそのようなメソッドはありませんが、JsObject( http://www.playframework.com/documentation/2.2.x/api/scala/index.html #play.api.libs.json.JsObject )であるため、解決策は次のとおりです。

val jsonObject = Json.toJson(classAObject).as[JsObject]
jsonObject + ("c", JsNumber(3)) 

誰かがこれが役に立つことを願っています:)

8