【发布时间】:2011-09-14 09:55:07
【问题描述】:
例如,给定以下 JSON 字符串:
[{"id": "user1", "password": "ps1"},{"id": "user2", "password": "ps2"},{"id": "user3", "password": "ps3"}]
在 Scala 中解析它并迭代每个结果并正确分析它的最佳和最优化的方法是什么?
谢谢。
【问题讨论】:
标签: json parsing scala iteration
例如,给定以下 JSON 字符串:
[{"id": "user1", "password": "ps1"},{"id": "user2", "password": "ps2"},{"id": "user3", "password": "ps3"}]
在 Scala 中解析它并迭代每个结果并正确分析它的最佳和最优化的方法是什么?
谢谢。
【问题讨论】:
标签: json parsing scala iteration
使用 Lift-JSON:
导入 net.liftweb.json.JsonParser._ 导入 net.liftweb.json.DefaultFormats val jsonString = //你的 jsonString.... 案例类凭据(id:字符串,密码:字符串) 隐式 val 格式 = DefaultFormats val credentials = parse(jsonString).extract[List[Credential]] 凭证 foreach { cred => println(cred.id + " " + cred.password) }一切都在这里解释:http://www.assembla.com/spaces/liftweb/wiki/JSON_Support
【讨论】:
我认为这篇博文对您的问题给出了全面的回答:http://debasishg.blogspot.com/2011/02/applicatives-for-composable-json.html 最后还有一个指向完整源代码库的链接。
【讨论】:
您可以使用 lift-json 库:http://www.assembla.com/spaces/liftweb/wiki/JSON_Support
【讨论】:
https://github.com/lift/lift/blob/master/framework/lift-base/lift-json/README.md 通过使用 LINQ :)
除了 lift-json 和上面提到的类型类方法,我知道 spray-json(PEG 解析器)和 twitter 的 json 库(基于 Programming in Scala 书中的代码)和 blueeyes 中的 json 库.还有其他的!
我建议看一下Jackson,它是一个成熟且功能丰富的库,用于从 Java 中解析 JSON。
Jackson 有一个 scala 的“官方”扩展:jackson-module-scala 和另一个 Jerkson。
【讨论】:
框架中有一个 JSON 解析库,使用解析器组合器构建:http://www.scala-lang.org/api/current/scala/util/parsing/json/package.html
Odersky 和 Venners 将引导您完成它in their book,这是最后一章之一。
【讨论】: