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})
どんな助けも感謝します!
自分で解決策を見つけました。実際、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))
誰かがこれが役に立つことを願っています:)