我正在尝试(但失败)了解 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]
那么它可以工作并且所有内容都可以解析,但是一旦我尝试解析数组,它就会失败并出现错误Object expected in field 'items'
谁能指出我做错的方向?