我正在使用play 2.1.1,并且在遍历数组时遇到问题。我读过某个地方,您可以为List [Object]创建读取,但是每次尝试执行此操作时,都会收到一条错误消息"No unapply function found":
"No unapply function found"
implicit val userListReads: Reads[List[FBUser]] = Json.reads[List[FBUser]]". The issue is " = Json.reads[List[FBUser]]
我无所适从。任何帮助将不胜感激。
def linkUsers() = Action { implicit request => val json = Json.parse("{\"data\": [{\"name\": \"Me Lazyan\",\"id\": \"1182\"},{\"name\": \"Chales Dselle\",\"id\": \"10115\"},{\"name\": \"Be My\",\"id\": \"10275\"},{\"name\": \"De Rwani\", \"id\": \"11189\"},{\"name\": \"Phoe Johon\", \"id\": \"11372\"}]}") val peoples = json.validate[List[FBUser]].get peoples.foreach(println) Ok(json).withHeaders(CONTENT_TYPE -> "text/json") } case class FBUser( name: String, id: String ) object FBUser { /** Uses a Scala Macro to define the Reads function */ implicit val userReads: Reads[FBUser] = Json.reads[FBUser] implicit val userListReads: Reads[List[FBUser]] = Json.reads[List[FBUser]] }
您的json值是一个对象,其字段data包含一个数组。您试图将单个对象解析为数组。您要么必须更改json为。
json
data
val json = Json.parse("[{\"name\": \"Me Lazyan\",\"id\": \"1182\"},{\"name\": \"Chales Dselle\",\"id\": \"10115\"},{\"name\": \"Be My\",\"id\": \"10275\"},{\"name\": \"De Rwani\", \"id\": \"11189\"},{\"name\": \"Phoe Johon\", \"id\": \"11372\"}]")
或将您的代码更改为
val people = (json \ "data").validate[List[FBUser]].get