我有一個以下情形:如何使用scala中的play-json從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