Как я могу получить вложенное свойство, используя Data.Aeson
?
Например, при декодировании произвольной строки JSON с использованием Value
следующим образом:
decode "{\"foo\":{\"bar0\":\"foobar0\",
\"bar1\":\"foobar1\"}}" :: Maybe Value
Я заканчиваю с этим:
Just (Object (fromList [("foo",Object (fromList [("bar1",String "foobar1"),("bar0",String "foobar0")]))]))
Теперь, как я могу написать функцию [String] -> Object -> Maybe Value
, которая будет извлекать Value
, если таковые имеются, полученные в результате следования предоставленному списку свойств?
Эту функцию следует использовать так:
extractProperty ["foo", "bar0"] (Object (fromList [("foo",Object (fromList [("bar1",String "foobar1"),("bar0",String "foobar0")]))]))
==> Just (String "foobar0")
extractProperty ["foo", "bar0", "baz"] (Object (fromList [("foo",Object (fromList [("bar1",String "foobar1"),("bar0",String "foobar0")]))]))
==> Nothing