Haskell 如何生成带缩进的 JSON?


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

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


 haskell


 import 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))

haskell json

V不尼塔尼亚 10 years, 1 month ago

不会 Haskell,顺手来转发搜索结果的…… https://hackage.haskell.org/package/json-0.4.2/docs/Text-JSON-Pretty.h...

可以 Google 搜索 "haskell json prettify print" 试试,还挺多搜索结果的....

hxktc answered 10 years, 1 month ago

Your Answer