Предполагая, что у вас есть строка, подобная этой (обратите внимание, что я удалил запятую, которая недопустима в формате JSON):
val doc = """
{
"1": {
"name": "hoge",
"num": "60"
},
"2": {
"name": "huga",
"num": "100"
},
"3": {
"name": "hogehuga",
"num": "10"
}
}
"""
Вы можете проанализировать его с помощью circe следующим образом (при условии, что вы добавили модуль circe-jawn в конфигурацию сборки):
scala> io.circe.jawn.parse(doc)
res1: Either[io.circe.ParsingFailure,io.circe.Json] =
Right({
"1" : {
"name" : "hoge",
"num" : "60"
},
"2" : {
"name" : "huga",
"num" : "100"
},
"3" : {
"name" : "hogehuga",
"num" : "10"
}
})
В circe (и некоторых других библиотеках JSON) слово "parse" используется для обозначения преобразования строк в представление JSON (в данном случае io.circe.Json
). Скорее всего, вы хотите что-то еще, например карту для тематических классов. В действительности этот вид преобразования в не связанные с JSON типы Scala называется декодированием и может выглядеть следующим образом:
scala> import io.circe.generic.auto._
import io.circe.generic.auto._
scala> case class Item(name: String, num: Int)
defined class Item
scala> io.circe.jawn.decode[Map[Int, Item]](doc)
res2: Either[io.circe.Error,Map[Int,Item]] = Right(Map(1 -> Item(hoge,60), 2 -> Item(huga,100), 3 -> Item(hogehuga,10)))
Конечно, вы можете декодировать этот JSON во множество различных представлений Scala - если это не сработает, пожалуйста, расширьте свой вопрос, и я обновлю ответ.