@@ -66,7 +66,6 @@ import Data.Aeson
6666import Data.Aeson.Types (Pair, parseMaybe, parseEither, Parser)
6767import Text.Libyaml hiding (encode, decode, encodeFile, decodeFile)
6868import Data.ByteString (ByteString)
69−import qualified Data.ByteString.Char8 as S8
7069import qualified Data.Map as Map
7170import System.IO.Unsafe (unsafePerformIO)
7271import Control.Exception (try, throwIO, fromException, Exception, SomeException, AsyncException)
@@ -88,8 +87,13 @@ import qualified Data.HashSet as HashSet
8887import Data.Text.Read
8988#if MIN_VERSION_aeson(0, 7, 0)
9089import Data.Scientific (fromFloatDigits)
90+import qualified Data.Text.Encoding as TE
91+import qualified Data.Text.Lazy as TL
92+import Data.Text.Lazy.Builder (toLazyText)
93+import Data.Aeson.Encode (encodeToTextBuilder)
9194#else
9295import Data.Attoparsec.Number
96+import qualified Data.ByteString.Char8 as S8
9397#endif
9498import Control.Monad.Trans.Resource (ResourceT, runResourceT)
9599
@@ -140,7 +144,12 @@ objToEvents' (String s) rest =
140144objToEvents' Null rest = EventScalar "null" NullTag PlainNoTag Nothing : rest
141145objToEvents' (Bool True) rest = EventScalar "true" BoolTag PlainNoTag Nothing : rest
142146objToEvents' (Bool False) rest = EventScalar "false" BoolTag PlainNoTag Nothing : rest
147+#if MIN_VERSION_aeson(0,7,0)
148+-- Use aeson's implementation which gets rid of annoying decimal points
149+objToEvents' n@Number{} rest = EventScalar (TE.encodeUtf8 $ TL.toStrict $ toLazyText $ encodeToTextBuilder n) IntTag PlainNoTag Nothing : rest
150+#else
143151objToEvents' (Number n) rest = EventScalar (S8.pack $ show n) IntTag PlainNoTag Nothing : rest
152+#endif
144153
145154pairToEvents :: Pair -> [Y.Event] -> [Y.Event]
146155pairToEvents (k, v) rest =