我试图理解spray-json如何将json数据转换为对象,但一直无法成功。如果我有一个简单的键-值json数据源,那么它似乎可以正常工作,但我想要读取的数据是以这样的列表形式呈现:
[{
"name": "John",
"age": "30"
},
{
"name": "Tom",
"age": "25"
}]
我的代码看起来像这样:
package jsontest
import spray.json._
import DefaultJsonProtocol._
object JsonFun {
case class Person(name: String, age: String)
case class FriendList(items: List[Person])
object FriendsProtocol extends DefaultJsonProtocol {
implicit val personFormat = jsonFormat2(Person)
implicit val friendListFormat = jsonFormat1(FriendList)
}
def main(args: Array[String]): Unit = {
import FriendsProtocol._
val input = scala.io.Source.fromFile("test.json")("UTF-8").mkString.parseJson
val friendList = input.convertTo[FriendList]
println(friendList)
}
}
如果我更改我的测试文件,使其只有一个不在数组中的人,并运行
val friendList = input.convertTo [Person] ,那么它可以工作并且一切都可以解析,但是一旦我尝试解析数组,就会出现错误对象在字段“items”中期望
有人可以指出我做错了什么吗?