Haskell 如何生成带缩进的 JSON?

打算把我定义的 data 转化为 JSON 打印出来, 原来在 JavaScript 是很方便的,
Haskell 里花了半天, 勉强用 Text.JSON 完成了, 但是做不出来缩进...
另外尝试了下 Aeson, 不知道怎么写, 模块的文档太让我难受了, 看不懂 >_<
可以给个明确的例子在 Haskell 当中生成出 JSON 来吗?

https://github.com/Cirru/parser.hs/blob/master/main.hs

haskellimport Cirru
import Parser
import Text.JSON

name = "unfolding"

fileName = "./cirru/" ++ name ++ ".cirru"

getJSON :: CirruValue -> JSValue
getJSON (CirruToken text _ _ _ _ _) = JSString (toJSString text)
getJSON (CirruList list) = JSArray $ map getJSON list

main :: IO()
main = do
  code <- readFile fileName
  let json = encode $ getJSON $ resolveComma $ resolveDollar (parse code fileName)
  writeFile ("ast/" ++ name ++ ".json") json
  --putStrLn (show (parse code fileName))
阅读 3.3k
1 个回答