Один из способов анализа, который заключается в сопоставлении дочерних элементов корневого объекта JSON:
scala> parse(res).children.map(_.extract[Person])
res3: List[Person] = List(Person(Name One,Address(Some Street,Some City)), Person(Name Two,Address(Some Other Street,Some Other City)))
Или вот так, если вам нужно сохранить имена полей:
scala> Map() ++ parse(res).children.map { case f: JField => (f.name, f.extract[Person]) }
res4: scala.collection.immutable.Map[String,Person] = Map(person1 -> Person(Name One,Address(Some Street,Some City)), person2 -> Person(Name Two,Address(Some Other Street,Some Other City)))
Обратите внимание, что следующий прямой способ должен работать, когда мы начнем использовать функции 2.8:
parse(res).extract[Map[String, Person]]