@@ -100,7 +100,8 @@ import Data.Aeson.Types ( Value(..), Parser
100100 , defaultTaggedObject
101101 )
102102import Data.Aeson.Types.Internal (Encoding(..))
103−import Data.Bool ( Bool(False, True), otherwise, (&&) , not)
103+import Control.Monad ( return, mapM, liftM2, fail, join )
104+import Data.Bool ( Bool(False, True), otherwise, (&&), not )
104105import Data.Either ( Either(Left, Right) )
105106import Data.Eq ( (==) )
106107import Data.Function ( ($), (.), flip )
@@ -953,7 +954,7 @@ instance (FromJSON a) => LookupField a where
953954 Just v -> parseJSON v
954955
955956instance (FromJSON a) => LookupField (Maybe a) where
956− lookupField _ _ = (.:?)
957+ lookupField _ _ obj key = join <$> obj .:? key
957958
958959unknownFieldFail :: String -> String -> String -> Parser fail
959960unknownFieldFail tName rec key =