25 lines
696 B
Haskell
25 lines
696 B
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
import Data.Aeson
|
|
import Data.Attoparsec (parseOnly)
|
|
import Data.Text
|
|
import qualified Data.ByteString.Lazy.Char8 as B
|
|
import qualified Data.ByteString.Char8 as S
|
|
|
|
testdoc = object [
|
|
"foo" .= (1 :: Int),
|
|
"bar" .= ([1.3, 1.6, 1.9] :: [Double]),
|
|
"baz" .= ("some string" :: Text),
|
|
"other" .= object [
|
|
"yes" .= ("sir" :: Text)
|
|
]
|
|
]
|
|
|
|
main = do
|
|
let out = encode testdoc
|
|
B.putStrLn out
|
|
case parseOnly json (S.concat $ B.toChunks out) of
|
|
Left e -> error $ "strange error re-parsing json: " ++ (show e)
|
|
Right v | v /= testdoc -> error "documents not equal!"
|
|
Right v | otherwise -> print v
|