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" ' を含みます。何か案は?