on master help sign in
Add quotes to surround time encodings
commit0b98185573fd1b1656e519861b8754e6b870802c authorBen Weitzman <benjamin.weitzman@tufts.edu> dateSun 4 Oct 2015, 23:08 (11 years ago) parentbd45a07
2 files changed+10−5
Data/Aeson/Encode/Builder.hs+5 Data/Aeson/Types/Instances.hs+5−5
Data/Aeson/Encode/Builder.hs+5
@@ -23,6 +23,7 @@ module Data.Aeson.Encode.Builder
2323 , text
2424 , string
2525 , unquoted
26+ , quote
2627 , number
2728 , day
2829 , localTime
@@ -99,6 +100,10 @@ text t = B.char8 '"' <> unquoted t <> B.char8 '"'
99100unquoted :: T.Text -> Builder
100101unquoted t = TE.encodeUtf8BuilderEscaped escapeAscii t
101102
103+-- | Add quotes surrounding a builder
104+quote :: Builder -> Builder
105+quote b = B.char8 '"' <> b <> B.char8 '"'
106+
102107-- | Encode a JSON string.
103108string :: String -> Builder
104109string t = B.char8 '"' <> BP.primMapListBounded go t <> B.char8 '"'
Data/Aeson/Types/Instances.hs+5−5
@@ -713,14 +713,14 @@ instance FromJSON DotNetTime where
713713
714714instance ToJSON Day where
715715 toJSON = stringEncoding
716− toEncoding z = Encoding (E.day z)
716+ toEncoding z = Encoding (E.quote $ E.day z)
717717
718718instance FromJSON Day where
719719 parseJSON = withText "Day" (Time.run Time.day)
720720
721721instance ToJSON LocalTime where
722722 toJSON = stringEncoding
723− toEncoding z = Encoding (E.localTime z)
723+ toEncoding z = Encoding (E.quote $ E.localTime z)
724724
725725instance FromJSON LocalTime where
726726 parseJSON = withText "LocalTime" (Time.run Time.localTime)
@@ -728,7 +728,7 @@ instance FromJSON LocalTime where
728728instance ToJSON ZonedTime where
729729 toJSON = stringEncoding
730730
731− toEncoding z = Encoding (E.zonedTime z)
731+ toEncoding z = Encoding (E.quote $ E.zonedTime z)
732732
733733formatMillis :: (FormatTime t) => t -> String
734734formatMillis = take 3 . formatTime defaultTimeLocale "%q"
@@ -739,11 +739,11 @@ instance FromJSON ZonedTime where
739739instance ToJSON UTCTime where
740740 toJSON = stringEncoding
741741
742− toEncoding t = Encoding (E.utcTime t)
742+ toEncoding t = Encoding (E.quote $ E.utcTime t)
743743
744744-- | Encode something to a JSON string.
745745stringEncoding :: (ToJSON a) => a -> Value
746−stringEncoding = String . T.decodeLatin1 . L.toStrict . encode
746+stringEncoding = String . T.dropAround (== '"') . T.decodeLatin1 . L.toStrict . encode
747747{-# INLINE stringEncoding #-}
748748
749749instance FromJSON UTCTime where