2015-05-18 33 views
0

我想使用json4s将json字符串解析为对象,但即使运行此代码后,我也得到以下打印结果。无法将json转换为使用json4s的对象scala

JObject(列表((数字,JArray(列表(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]) 

,输出是:

ü serList(List(User(Foo,List([email protected][email protected])),User(Bar,List([email protected][email protected]))))