| Safe Haskell | None |
|---|
Data.Aeson.Lens
Contents
- nth :: (FromJSON v, ToJSON v) => Int -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)
- nth' :: (FromJSON u, ToJSON v) => Int -> IndexedLens ValueIx (Maybe Value) (Maybe Value) (Maybe u) (Maybe v)
- key :: (FromJSON v, ToJSON v) => Text -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)
- key' :: (FromJSON u, ToJSON v) => Text -> IndexedLens ValueIx (Maybe Value) (Maybe Value) (Maybe u) (Maybe v)
- asDouble :: SimpleLens (Maybe Value) (Maybe Double)
- asText :: SimpleLens (Maybe Value) (Maybe Text)
- asBool :: SimpleLens (Maybe Value) (Maybe Bool)
- traverseArray :: (FromJSON v, ToJSON v) => SimpleIndexedTraversal Int (Maybe Value) (Maybe v)
- traverseArray' :: (FromJSON u, ToJSON v) => IndexedTraversal Int (Maybe Value) (Maybe Value) (Maybe u) (Maybe v)
- traverseObject :: (FromJSON v, ToJSON v) => SimpleIndexedTraversal Text (Maybe Value) (Maybe v)
- traverseObject' :: (FromJSON u, ToJSON v) => IndexedTraversal Text (Maybe Value) (Maybe Value) (Maybe u) (Maybe v)
Lenses
nth :: (FromJSON v, ToJSON v) => Int -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)Source
Lens of Array
>>>let v = decode (L.pack "{\"foo\": {\"baz\": 3.14}, \"bar\": [123, false, null]}") :: Maybe Value>>>v ^. key (T.pack "bar") . nth 1 :: Maybe BoolJust False>>>v ^. key (T.pack "bar") . nth 1 :: Maybe StringNothing>>>v ^. key (T.pack "bar") . nth 3 :: Maybe ValueNothing>>>v ^. nth 0 :: Maybe ValueNothing>>>let x = nth 0 .~ Just 1 $ Nothing>>>L.unpack $ encode x"[1]">>>let y = nth 1 .~ Just "hoge" $ x>>>L.unpack $ encode y"[1,\"hoge\"]">>>let z = nth 0 .~ Just False $ y>>>L.unpack $ encode z"[false,\"hoge\"]"
nth' :: (FromJSON u, ToJSON v) => Int -> IndexedLens ValueIx (Maybe Value) (Maybe Value) (Maybe u) (Maybe v)Source
key :: (FromJSON v, ToJSON v) => Text -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)Source
Lens of Object
>>>let v = decode (L.pack "{\"foo\": {\"baz\": 3.14}, \"bar\": [123, false, null]}") :: Maybe Value>>>v ^. key (T.pack "foo") . key (T.pack "baz") :: Maybe DoubleJust 3.14>>>v ^. key (T.pack "foo") . key (T.pack "baz") :: Maybe ObjectNothing>>>v ^. key (T.pack "foo") . key (T.pack "hoge") :: Maybe ValueNothing>>>v ^. key (T.pack "hoge") :: Maybe ValueNothing>>>let w = key (T.pack "a") .~ Just 2.23 $ Nothing>>>L.unpack $ encode w"{\"a\":2.23}">>>let x = key (T.pack "b") . key (T.pack "c") .~ Just True $ w>>>L.unpack $ encode x"{\"b\":{\"c\":true},\"a\":2.23}"
key' :: (FromJSON u, ToJSON v) => Text -> IndexedLens ValueIx (Maybe Value) (Maybe Value) (Maybe u) (Maybe v)Source
asDouble :: SimpleLens (Maybe Value) (Maybe Double)Source
Lens of Double
>>>let v = decode (L.pack "{\"foo\": {\"baz\": 3.14}, \"bar\": [123, false, null]}") :: Maybe Value>>>v ^. key (T.pack "foo") . key (T.pack "baz") . asDoubleJust 3.14>>>v ^. key (T.pack "bar") . asDoubleNothing>>>v ^. key (T.pack "hoge") . asDoubleNothing
asText :: SimpleLens (Maybe Value) (Maybe Text)Source
Lens of Text
>>>let v = decode (L.pack "{\"foo\": {\"baz\": \"3.14\"}, \"bar\": [123, false, null]}") :: Maybe Value>>>v ^. key (T.pack "foo") . key (T.pack "baz") . asTextJust "3.14">>>v ^. key (T.pack "bar") . asTextNothing>>>v ^. key (T.pack "hoge") . asTextNothing
asBool :: SimpleLens (Maybe Value) (Maybe Bool)Source
Lens of Bool
>>>let v = decode (L.pack "{\"foo\": {\"baz\": false}, \"bar\": [123, false, null]}") :: Maybe Value>>>v ^. key (T.pack "foo") . key (T.pack "baz") . asBoolJust False>>>v ^. key (T.pack "bar") . asBoolNothing>>>v ^. key (T.pack "hoge") . asBoolNothing
Traversals
traverseArray :: (FromJSON v, ToJSON v) => SimpleIndexedTraversal Int (Maybe Value) (Maybe v)Source
Indexed traversal of Array
>>>let v = decode (L.pack "[1, true, null]") :: Maybe Value>>>catMaybes . toListOf traverseArray $ v :: [Value][Number 1,Bool True,Null]>>>let w = decode (L.pack "[{\"name\": \"tanakh\", \"age\": 29}, {\"name\": \"nushio\", \"age\": 28}]") :: Maybe Value>>>catMaybes . toListOf (traverseArray . key (T.pack "name")) $ w :: [T.Text]["tanakh","nushio"]
traverseArray' :: (FromJSON u, ToJSON v) => IndexedTraversal Int (Maybe Value) (Maybe Value) (Maybe u) (Maybe v)Source
Type-changing indexed traversal of an Array
traverseObject :: (FromJSON v, ToJSON v) => SimpleIndexedTraversal Text (Maybe Value) (Maybe v)Source
Indexed traversal of Object
>>>let w = decode (L.pack "[{\"name\": \"tanakh\", \"age\": 29}, {\"name\": \"nushio\", \"age\": 28}]") :: Maybe Value>>>catMaybes . toListOf (traverseArray . traverseObject) $ w :: [Value][String "tanakh",Number 29,String "nushio",Number 28]