Не удалось преобразовать json в объект с помощью json4s scala

Я пытаюсь использовать json4s для анализа строки json в объект, но даже после запуска этого кода я получаю результат печати.

JObject(List((numbers,JArray(List(JInt(1), JInt(2), JInt(3), JInt(4))))))

    def main(args: Array[String]): Unit = {

        val json = """{"users": [
                       {"name": "Foo", "emails": ["[email protected]", "[email protected]"]},
                       {"name": "Bar", "emails": ["[email protected]", "[email protected]"]}]
                     }"""
        val obj = parse(json).extract[List[User]]
        println(obj)
      }

    case class User(name: String, emails: List[String])
    case class UserList(users: List[User]) {
    override def toString(): String = {
       this.users.foldLeft("")((a, b) => a + b.toString)
    }
}

Пожалуйста помоги


person nat    schedule 18.05.2015    source источник


Ответы (1)


Просто добавьте implicit val formats = DefaultFormats и измените общий тип на UserList :

import org.json4s._
import org.json4s.native.JsonMethods._

object Test {
       def main(args: Array[String]): Unit = {
           implicit val formats = DefaultFormats
           val json = """{"users": [
                   {"name": "Foo", "emails": ["[email protected]", "[email protected]"]},
                   {"name": "Bar", "emails": ["[email protected]", "[email protected]"]}]
                 }"""

           val obj = parse(json).extract[UserList]
           println(obj)
       }
}
case class User(name: String, emails: List[String])
case class UserList(users: List[User])

и вывод:

UserList(List(User(Foo,List([email protected], [email protected])), User(Bar,List([email protected], [email protected]))))

person igreenfield    schedule 18.05.2015