json - 在 Scala 中读取其键/值对和类型未知的 JSON
问题描述
如何迭代JSON
对象without knowing key/value pairs
及其类型Scala
解决方案
您可以使用常规遍历方法,例如
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
推荐阅读
- graphql - 如何更改 Apollo Server WS 路径?
- highcharts - 创建地图、柱形图和雷达图时解决highmaps-highcharts冲突
- sql - How can I do an SQL pivot putting all results in 1 row per record?
- c# - can I use generic services in domain service with different business or not?
- c# - Generic Interface with composed interfaces and multiple concrete implementations
- javascript - Replacing images on mouseover with only childnodes and javascript
- html - 如何修复无法在移动设备上正确显示的 Bootstrap4 菜单
- python - 后向差分编码
- face-api - Improve speed of first detection in face-api.js?
- google-sheets - Google Finance get year to date spreadsheets