Разбор JSON с несколькими кортежами в List<object> в scala
[
{"fname":"Foo","lname":"Pacman"},
{"fname":"Bar","lname":"Mario"},
{"fname":"Poo","lname":"Wario"}
]
Ну, у меня есть строка JSON в этом формате, теперь мне нужно преобразовать каждый кортеж -> {"fname":"Foo","lname":"Pacman"}
Для объекта Person, например, давайте предположим, что у меня есть класс case
case class Person(fname:String,lname:String)
Теперь, как мне получить, List<person>
Если бы у меня был JSON, содержащий данные для одного кортежа, то я мог бы,
val o:Person = parse[Person](jsonString)// I am actually using Jerkson Lib
Но так как существует более одного кортежа, как мне проанализировать их по отдельности, создать объекты и создать список.
2 ответа
Jerkson поддерживает десериализацию списков объектов из коробки, поэтому все, что вам нужно сделать, это:
val people = parse[List[Person]](personJson)
Вы можете использовать json4s (который является оберткой вокруг jackson или lift-json), где вы также получаете такие возможности синтаксического анализа из коробки.
import org.json4s._
import org.json4s.jackson.JsonMethods._
implicit val formats = DefaultFormats
val personJson = """
[
{"fname":"Foo","lname":"Pacman"},
{"fname":"Bar","lname":"Mario"},
{"fname":"Poo","lname":"Wario"}
]"""
case class Person(fname:String,lname:String)
val people = parse(personJson).extract[List[Person]]