В Scala 2.11
, имея код ниже:Работа с JSON в Скала?
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)
- если объединить две последние строки
for (i <- 0 until 100) yield (JSON \ "items")(i)
, будет терминJSON \ "items"
быть оценены для каждогоi
или только один раз? - стоит ли parallelise строительства списка с этой
for-expression
(я не забочусь о том порядке, в котором элементы будут появляются в списке), гдеitems
представляет собой массив объектов JSON? - Каков наилучший способ обработать исключения из разбора JSON в строках (3 - 4) и проверить его?
1.'JSON \ "items" 'это просто конструкция dsl для извлечения элемента. Его O (1) так использовать, когда захотите. Все работы по разбору и построению дерева AST уже выполняются в 'Json.parse'. – ipoteka
Это точно. '(JSON \" items ") (i)' достаточно хорошо. К сожалению, насколько я знаю, json dsl не поддерживает 'JSON \" элементы "\\ i'. – ipoteka
Это вопрос выбора, я думаю. Я использую 'import scala.util. {Try, Success, Failure}', когда я разбираю, вероятно, недопустимый json извне. Но когда я создаю json в своей системе, я не завожу их в 'Try []'. Не могу рекомендовать больше рядом с этими очевидными вещами :( – ipoteka