Прочитайте JSON в Scala, чьи пары ключ / значение и типы неизвестны - PullRequest
0 голосов
/ 03 мая 2018

Как перебрать объект JSON without knowing key/value pairs и их типы в Scala

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете использовать обычные методы обхода, например,

import cats.syntax.either._
import io.circe._, io.circe.parser._

val json: String = """
  {
    "id": "c730433b-082c-4984-9d66-855c243266f0",
    "name": "Foo",
    "counts": [1, 2, 3],
    "values": {
      "bar": true,
      "baz": 100.001,
      "qux": ["a", "b"]
    }
  }
"""

val doc: Json = parse(json).getOrElse(Json.Null)

val baz: Decoder.Result[Json] =
  cursor.downField("values").downField("baz").as[Json]

Декодирование как Json позволяет вам впоследствии сопоставить шаблон.

baz.map({
  case JNull       => "Null"
  case JBoolean(_) => "Boolean"
  case JNumber(_)  => "Number"
  case JString(_)  => "String"
  case JArray(_)   => "Array"
  case JObject(_)  => "Object"
})

Источники: https://circe.github.io/circe/cursors.html, https://circe.github.io/circe/api/io/circe/Json.html, https://github.com/circe/circe/blob/master/modules/core/shared/src/main/scala/io/circe/Json.scala#L95-L100

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...