@@ -28,16 +28,26 @@ module Data.Aeson.Encode
2828 ) where
2929
3030import Data.Aeson.Encode.Builder (encodeToBuilder)
31−import Data.Aeson.Encode.Functions (encode)
32−import Data.Aeson.Types (Value(..))
31+import Data.Aeson.Types (Value(..), ToJSON (..))
32+import Data.Aeson.Encoding (fromEncoding)
3333import Data.Monoid ((<>))
3434import Data.Scientific (FPFormat(..), Scientific, base10Exponent)
3535import Data.Text.Lazy.Builder
3636import Data.Text.Lazy.Builder.Scientific (formatScientificBuilder)
37+
3738import Numeric (showHex)
39+import qualified Data.ByteString.Builder as B
3840import qualified Data.HashMap.Strict as H
3941import qualified Data.Text as T
4042import qualified Data.Vector as V
43+import qualified Data.ByteString.Lazy as L
44+
45+-- | Efficiently serialize a JSON value as a lazy 'L.ByteString'.
46+--
47+-- This is implemented in terms of the 'ToJSON' class's 'toEncoding' method.
48+encode :: ToJSON a => a -> L.ByteString
49+encode = B.toLazyByteString . fromEncoding . toEncoding
50+{-# INLINE encode #-}
4151
4252-- | Encode a JSON 'Value' to a "Data.Text" 'Builder', which can be
4353-- embedded efficiently in a text-based protocol.