-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPutJSON.hs
More file actions
27 lines (19 loc) · 704 Bytes
/
PutJSON.hs
File metadata and controls
27 lines (19 loc) · 704 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-- file: PutJSON.hs
module PutJSON where
import Data.List
import SimpleJSON
putJValue :: JValue -> IO ()
putJValue v = putStrLn (renderJValue v)
renderJValue :: JValue -> String
renderJValue (JString s) = show s
renderJValue (JNumber n) = show n
renderJValue (JBool True) = "true"
renderJValue (JBool False) = "false"
renderJValue JNull = "null"
renderJValue (JObject o) = "{" ++ pairs o ++ "}"
where pairs [] = ""
pairs ps = intercalate ", " (map renderPair ps)
renderPair (k,v) = show k ++ ": " ++ renderJValue v
renderJValue (JArray a) = "["++ values a ++ "]"
where values [] = ""
values vs = intercalate ", " (map renderJValue vs)