试用 Edward Kmett 的思维扩展镜头和 lens-aeson 包。这里是热身
s = "{ \"somekey\" : [ { \"deeperkey\" : 1} , {\"deeperkey\": 2, \"otherkey\":3}]}
期望的结果是
[(1, Nothing), (2, Just 3)]
我可以取得一点进展
import Control.Lens.Aeson
import Control.Lens
import Control.Monad
import qualified Data.Vector as V
λ> s ^. key "somekey" . _Array . to V.toList >>= (^.. key "deeperkey" . _Number)
[1,2]
但是到目前为止,我还没有弄清楚如何使组合器足够努力以获得正确的答案。我很可能涉及到片段'key "otherkey"'。有任何想法吗?