scala – 用Spray-json解析一个简单的数组
发布时间:2020-12-16 19:17:46 所属栏目:安全 来源:网络整理
导读:我正在尝试(并且失败)了解spray-json如何将json提要转换为对象.如果我有一个简单的密钥 – 值json feed然后它似乎工作正常,但我想要读取的数据来自这样的列表: [{ "name": "John","age": "30"},{ "name": "Tom","age": "25"}] 我的代码看起来像这样: packa
我正在尝试(并且失败)了解spray-json如何将json提要转换为对象.如果我有一个简单的密钥 – >值json feed然后它似乎工作正常,但我想要读取的数据来自这样的列表:
[{ "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]然后它工作并且一切都解析但是一旦我尝试解析一个数组它失败并出现错误对象预期在字段’项目’ 谁能指出我做错的方向? 解决方法
好吧,通常是在花费数小时试图让某些东西工作之后立即向StackOverflow发布内容后的方式,我已经设法让这个工作.
FriendsProtocol的正确实现是: object FriendsProtocol extends DefaultJsonProtocol { implicit val personFormat = jsonFormat2(Person) implicit object friendListJsonFormat extends RootJsonFormat[FriendList] { def read(value: JsValue) = FriendList(value.convertTo[List[Person]]) def write(f: FriendList) = ??? } } 告诉Spray如何读/写(只是在我的情况下读)列表对象足以让它工作. 希望能帮助别人! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- shell – 在Unix中组合来自文本文件的行?
- scala – 如何在play-framework中运行测试时应用play-evolu
- 基于cxf webservice(1)
- IE9 PathLocationStrategy Angular 4
- docker Mule-server curl:(56)Recv failure:由peer重置连
- vim 突然出现了 *** 已存在 然后怎么都无法返回去了 真是暴
- vue-cli如何引入bootstrap工具的方法
- shell脚本实现多彩进度条
- 通过实例在AngularJS / Ionic中进行深度链接
- scala – sbt 0.13.8 – buildSettings和projectSettings有