scala - 如何使用圆形光学遍历具有多个字段的对象列表
问题描述
我正在寻找一种最优雅的方式来遍历具有 circe optics 的 Json 中具有多个字段的对象列表。
假设我们有这种 JSON:
[
{
"key1": "one",
"key2": "two"
},
{
"key1": "three",
"key2": "four"
}
]
我们有一个案例类case class Entity(key1: String, key2: String)
所以我想找到最优雅和最时尚的方式来遍历这个 JSON 并最终创建一个案例对象列表。
我知道我可以使用每个: root.each.key1.string.getAll(json)
,但是我将如何构建一个镜头,它会给我一个可遍历的元组(?)或者我可以理解的东西。我可能会以某种方式组合镜头。
已经有一个这样的问题(如何使用 Circe 解析对象数组),但每个对象中只有一个字段。
解决方案
最近我也在尝试解决一个非常相似的问题:我想用circe-json
相当于以下jq
行的东西来实现:
cat json | jq '.[] | {key1: .key1, key2: .key2}'
我得到的最接近的是:
import io.circe.optics.JsonPath.root
root.each.json.getAll(json)
.map(j => (root.key1.string.getOption(j).get, root.key2.string.getOption(j).get))
.map(Entity.apply)
推荐阅读
- python - Pandas 数据框示例
- java - Hibernate中EntityNotFoundException的动态抑制
- c# - 在 Roslyn Analyzer 中未命中 IdentifierToken
- javascript - 使用窗口加载或文档准备延迟图像以提高页面速度 scpre
- python - Django,标签,href。怎么去上层?
- python - 为什么正则表达式 r" " 不接 " "?
- visual-c++ - OpenCV程序中的坏数组新长度错误
- spring - 使用投影检索子集合的特定字段
- r - 将数据标签添加到 R 中的 Plotly Bullet Chart
- javascript - 无法在 React Native Flatlist 组件中运行 onEndReached