Haskell 如何生成带缩进的 JSON?

题叶
  • 17.3k

打算把我定义的 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))
回复
阅读 2.7k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏