@@ -113,6 +113,7 @@ import qualified Data.Text as T
113113import qualified Data.Text.Encoding as T
114114import qualified Data.Text.Lazy as LT
115115import qualified Data.Tree as Tree
116+import qualified Data.UUID.Types as UUID
116117import qualified Data.Vector as V
117118import qualified Data.Vector.Generic as VG
118119import qualified Data.Vector.Mutable as VM
@@ -120,6 +121,9 @@ import qualified Data.Vector.Primitive as VP
120121import qualified Data.Vector.Storable as VS
121122import qualified Data.Vector.Unboxed as VU
122123
124+import qualified Data.Aeson.Encoding.Builder as EB
125+import qualified Data.ByteString.Builder as B
126+
123127#if !(MIN_VERSION_bytestring(0,10,0))
124128import Foreign.ForeignPtr (withForeignPtr)
125129import Foreign.Marshal.Utils (copyBytes)
@@ -1857,6 +1861,17 @@ instance (ToJSON v) => ToJSON (Tree.Tree v) where
18571861 toEncoding = toEncoding1
18581862 {-# INLINE toEncoding #-}
18591863
1864+-------------------------------------------------------------------------------
1865+-- uuid
1866+-------------------------------------------------------------------------------
1867+
1868+instance ToJSON UUID.UUID where
1869+ toJSON = toJSON . UUID.toText
1870+ toEncoding = E.unsafeToEncoding . EB.quote . B.byteString . UUID.toASCIIBytes
1871+
1872+instance ToJSONKey UUID.UUID where
1873+ toJSONKey = ToJSONKeyText UUID.toText $
1874+ E.unsafeToEncoding . EB.quote . B.byteString . UUID.toASCIIBytes
18601875
18611876-------------------------------------------------------------------------------
18621877-- vector