私は次のシナリオを持っている:Jsonからplay-jsonを使って余分な(キー、値)をスカラーで抽出する方法は?
ここcase class Person(id: Int, name: String)
val json = Json.obj("id" -> 1, "name" -> "John", "address"-> "Paris", "contact" -> "1234")
、私は{ "アドレス"、すなわち、余分な(キー、値)からJSONを抽出したい - > "パリ"、 "接触" - > "1234"} に属していない人。
私はこれまでのところ、以下のアプローチを開発しました:これは、しかし、ここで働く
case class Person(id: Int, name: String)
val personReads = Json.reads[Person]
val personWrites = Json.writes[Person]
val json = Json.obj("id" -> 1, "name" -> "John", "address"-> "Paris", "contact" -> "1234")
val person: Person = personReads.reads(json).get
// This person json does not have extra fields
val personJson: JsObject = personWrites.writes(person).asInstanceOf[JsObject]
val extraKeys = json.keys.diff(personJson.keys)
val extraJson = extraKeys.foldLeft(Json.obj()){(result,key) =>
result.+(key -> json.\(key).get)}
// {"address":"Paris","contact":"1234"}
私はケースクラスの変換にJSONの多くを行う必要があります。このシナリオで(キー、値)を抽出する最良の方法は何ですか?
はい右利用可能であり、私は私のユースケースのためにそれらの余分JSONを保持したいです。また、ケースクラスに余分なフィールドを追加する必要もありません。 – oblivion