@@ -5,6 +5,7 @@ module Json.Decode
5 , text, bool, int, float
5 , text, bool, int, float
6 , list, dict, maybe
6 , list, dict, maybe
7 , field, at
7 , field, at
8 , map, map2, succeed, fail, andThen
9 , map, map2, succeed, fail, andThen
@@ -20,6 +21,7 @@ import qualified Data.HashMap.Lazy as HashMap
20import qualified Data.Scientific as Scientific
21import qualified Data.Scientific as Scientific
21import qualified Data.Text as Text
22import qualified Data.Text as Text
22import qualified Data.Vector as Vector
23import qualified Data.Vector as Vector
24+import Data.Vector ((!?))
@@ -176,6 +178,27 @@ at names decoder =
184+index :: Int -> Decoder a -> Decoder a
185+index i (Decoder run) =
186+ Decoder $ \mkError value ->
188+ Aeson.Array vector ->
191+ run (mkError . Index i) v
195+ Failure value ("index " ++ show i ++ " of an array")
198+ Left (mkError (Failure value "an array"))
179-- MAPPING
202-- MAPPING