首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Scala中处理JSON?

在Scala中处理JSON?
EN

Stack Overflow用户
提问于 2015-04-20 21:20:07
回答 1查看 121关注 0票数 1

Scala 2.11中,具有以下代码:

代码语言:javascript
复制
import play.api.libs.json._
...
val data = // read json from file                             (3)
val JSON: JsValue = Json.parse(data mkString "\n")            (4)
val items = JSON \ "items"
for (i <- 0 until 100) yield items(i)
  1. 如果我把最后两行for (i <- 0 until 100) yield (JSON \ "items")(i)合并起来,JSON \ "items"这个术语是为每个i求值还是只计算一次?
  2. 是否值得将列表构造与这个for-expression并行(我不关心项目在列表中的出现顺序),其中items是一个JSON对象数组?
  3. 在行(3-4)中解析JSON并验证它的最佳方法是什么?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-21 02:15:12

  1. 如果您使用表达式JSON \ "items" 100次而不是1次,将有100倍的工作要找到这些节点-没有宏伟的回忆录或类似的事情正在进行。相对于执行它的次数,您的成本是O(n),而不是O(1)。但是在任何情况下,对于这个应用程序来说,这种区别是无关紧要的--假设没有外部循环,您没有向我们展示。
  2. 对于并行化来说,这太小了,没有任何意义--事实上,开销可能会减慢速度。如果你真正的案子是yield expensiveComputationBasedOn(items(i)),那也许吧。
  3. 对于第3-4行,是的,如果需要在这里处理它,请在这里使用Try,否则使用更高的方法(在调用此方法的方法中)。通常,在最高级别捕获异常,在那里仍然可以提供关于日志消息中发生了什么错误、可以在哪里进行任何故障恢复以及在哪里可以进行调试的足够信息。这既节省了工作,又确保了你捕捉到了所有的东西--甚至是你没有想到的东西。如果是在你的“主”里,好吧。选项不会捕获异常。注意:如果这是针对某堂课的,那么您的老师可能正在寻找本地错误处理,不管如何。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29758620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档