Я изучаю Json4s библиотеку.
У меня есть фрагмент json:
{
"records":[
{
"name":"John Derp",
"address":"Jem Street 21"
},
{
"name":"Scala Jo",
"address":"in my sweet dream"
}
]
}
И у меня есть код Scala, который преобразует строку json в список карт, например:
import org.json4s._
import org.json4s.JsonAST._
import org.json4s.native.JsonParser
val json = JsonParser.parse( """{"records":[{"name":"John Derp","address":"Jem Street 21"},{"name":"Scala Jo","address":"in my sweet dream"}]}""")
val records: List[Map[String, Any]] = for {
JObject(rec) <- json \ "records"
JField("name", JString(name)) <- rec
JField("address", JString(address)) <- rec
} yield Map("name" -> name, "address" -> address)
println(records)
Выходной сигнал records
на экран дает следующее:
Список (Карта (имя → John Derp, адрес → Jem Street 21), Карта (имя → Scala Jo, адрес → в моем сладком сне))
Я хочу понять, что означают строки внутри цикла for
. Например, в чем смысл этой строки:
JObject(rec) <- json \ "records"
Я понимаю, что json \ "records"
создает объект JArray
, но почему он извлекается как JObject(rec)
слева от <-
? В чем смысл синтаксиса JObject(rec)
? Откуда берется переменная rec
? Может ли JObject(rec)
создать экземпляр нового класса JObject
из rec
ввода?
Кстати, у меня есть язык программирования Java, поэтому было бы полезно, если бы вы могли показать мне эквивалентный код Java для цикла выше.