@@ -34,7 +34,7 @@ import Data.Aeson
3434 , (.=)
3535 )
3636import Data.Aeson.Encoding (pair)
37−import Data.Aeson.Types (typeMismatch)
37+import Data.Aeson.Types (explicitParseField, typeMismatch)
3838import Data.String (IsString)
3939
4040import GHC.Generics (Generic)
@@ -64,9 +64,10 @@ bodyKVs Message{messageBody, messageData} =
6464 ]
6565
6666instance FromJSON arbitrary => FromJSON (Body arbitrary) where
67− parseJSON (Object o') = do
68− o <- o' .: "message"
69− Message <$> o .: "body" <*> o .: "data"
67+ parseJSON (Object o') = explicitParseField parseMessage o' "message"
68+ where
69+ parseMessage (Object o) = Message <$> o .: "body" <*> o .: "data"
70+ parseMessage v = typeMismatch "Body arbitrary (message)" v
7071 parseJSON v = typeMismatch "Body arbitrary" v
7172
7273instance ToJSON arbitrary => ToJSON (Body arbitrary) where