首页 > 解决方案 > 是否有用于运行时字段访问的基于字符串的镜头?

问题描述

类似于这个问题,但更多的是运行时间。

有没有办法自动生成镜头或任何其他机制,以便在运行时按名称访问字段?

我正在寻找类似于fieldfromgeneric-lens的东西,除了将字段名称作为运行时参数而不是类型级别参数(并返回 a Maybe)。

我自己写这个很舒服,但我认为它可能已经存在。

例子

data Foo = Foo { bar :: Bar }
data Bar = ...

Deriving Generic,您可以generic-lens用来获得方便的field @"bar"镜头 - 但是有没有办法自动生成/导出fieldAtRuntime "bar"行为相同(或相似)的方式?

动机

我想使用 JSON 路径导航一些自定义数据结构。JSON 可能与记录字段不完全匹配对我来说并不重要,但我确实希望不必序列化、遍历和反序列化。

标签: haskelljsonpathhaskell-lens

解决方案


推荐阅读