{-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE StandaloneDeriving #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module ByteString.Aeson.Orphans where import Data.Aeson import Data.ByteString (ByteString) import qualified Data.ByteString.Base64 as B64 import qualified Data.ByteString.Lazy as LBS import Data.Text.Encoding (decodeUtf8, encodeUtf8) instance ToJSON ByteString where toJSON = toJSON . decodeUtf8 . B64.encode instance FromJSON ByteString where parseJSON o = either fail return . B64.decode . encodeUtf8 =<< parseJSON o instance ToJSON LBS.ByteString where toJSON = toJSON . decodeUtf8 . B64.encode . LBS.toStrict instance FromJSON LBS.ByteString where parseJSON o = either fail (return . LBS.fromStrict) . B64.decode . encodeUtf8 =<< parseJSON o instance ToJSONKey ByteString instance FromJSONKey ByteString