2015-05-18 3 views
0

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

JObject (Список ((номера, 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) 
    } 
} 

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

ответ

2

Просто добавьте implicit val formats = DefaultFormats и изменить genric типа к 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]) 

и выход:

U serList (Список (Пользователь (Foo, List ([email protected], [email protected])), Пользователь (Bar, List ([email protected], [email protected]))))

Смежные вопросы