Safe Haskell | None |
---|
Documentation
valueAt :: (ToJSON v, FromJSON v) => ValueIx -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)Source
Lens of Value
arr :: (ToJSON v, FromJSON v) => Int -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)Source
Lens of Array
>>>
L.unpack $ encode v
"{\"bar\":[123,false,null],\"foo\":{\"baz\":3.14}}">>>
v ^. obj (T.pack "bar") . arr 1 :: Maybe Bool
Just False>>>
v ^. obj (T.pack "bar") . arr 1 :: Maybe String
Nothing>>>
v ^. obj (T.pack "bar") . arr 3 :: Maybe Value
Nothing>>>
v ^. arr 0 :: Maybe Value
Nothing>>>
let x = arr 0 .~ Just 1 $ Nothing
>>>
L.unpack $ encode x
"[1]">>>
let y = arr 1 .~ Just "hoge" $ x
>>>
L.unpack $ encode y
"[1,\"hoge\"]">>>
let z = arr 0 .~ Just False $ y
>>>
L.unpack $ encode z
"[false,\"hoge\"]"
obj :: (ToJSON v, FromJSON v) => Text -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)Source
Lens of Object
>>>
v ^. obj (T.pack "foo") . obj (T.pack "baz") :: Maybe Double
Just 3.14>>>
v ^. obj (T.pack "foo") . obj (T.pack "baz") :: Maybe Object
Nothing>>>
v ^. obj (T.pack "foo") . obj (T.pack "hoge") :: Maybe Value
Nothing>>>
v ^. obj (T.pack "hoge") :: Maybe Value
Nothing>>>
let w = obj (T.pack "a") .~ Just 2.23 $ Nothing
>>>
L.unpack $ encode w
"{\"a\":2.23}">>>
let x = obj (T.pack "b") . obj (T.pack "c") .~ Just True $ w
>>>
L.unpack $ encode x
"{\"b\":{\"c\":true},\"a\":2.23}"