@@ -13,6 +13,7 @@ module Data.Aeson.Types
1313 ) where
1414
1515import Control.Applicative
16+import Control.DeepSeq
1617import Data.Map (Map)
1718import Data.Text (Text, pack, unpack)
1819import Data.Time.Clock (UTCTime)
@@ -34,6 +35,14 @@ data Value = Object Object
3435 | Null
3536 deriving (Eq, Show, Typeable)
3637
38+instance NFData Value where
39+ rnf (Object o) = rnf o
40+ rnf (Array a) = V.foldl' (\x y -> rnf y `seq` x) () a
41+ rnf (String s) = rnf s
42+ rnf (Number n) = rnf n
43+ rnf (Bool b) = rnf b
44+ rnf Null = ()
45+
3746(.=) :: ToJSON a => Text -> a -> Object
3847name .= value = M.singleton name (toJSON value)
3948{-# INLINE (.=) #-}