@@ -79,7 +79,7 @@ module Data.Aeson.Types.FromJSON
79
79
80
80
import Data.Aeson.Internal.Prelude
81
81
82
- import Control.Monad (zipWithM )
82
+ import Control.Monad (zipWithM , guard )
83
83
import Data.Aeson.Internal.Functions (mapKey , mapKeyO )
84
84
import Data.Aeson.Internal.Scientific
85
85
import Data.Aeson.Types.Generic
@@ -1384,15 +1384,15 @@ instance {-# OVERLAPPABLE #-}
1384
1384
1385
1385
instance (Selector s , FromJSON a , Generic a , K1 i a ~ Rep a ) =>
1386
1386
RecordFromJSON' arity (S1 s (K1 i a )) where
1387
- recordParseJSON' args obj =
1388
- recordParseJSONImpl (fmap K1 omittedField) gParseJSON args obj
1387
+ recordParseJSON' args@ (_ :* _ :* opts :* _) obj =
1388
+ recordParseJSONImpl (fmap K1 $ guard (omitNothingFields opts) >> omittedField) gParseJSON args obj
1389
1389
{-# INLINE recordParseJSON' #-}
1390
1390
1391
1391
instance {-# OVERLAPPING #-}
1392
1392
(Selector s , FromJSON a ) =>
1393
1393
RecordFromJSON' arity (S1 s (Rec0 a )) where
1394
- recordParseJSON' args obj =
1395
- recordParseJSONImpl (fmap K1 omittedField) gParseJSON args obj
1394
+ recordParseJSON' args@ (_ :* _ :* opts :* _) obj =
1395
+ recordParseJSONImpl (fmap K1 $ guard (omitNothingFields opts) >> omittedField) gParseJSON args obj
1396
1396
{-# INLINE recordParseJSON' #-}
1397
1397
1398
1398
instance (Selector s , GFromJSON arity (Rec1 f ), FromJSON1 f ) =>
0 commit comments