Разбор 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]]
Другие вопросы по тегам