我对 Haskell 相当陌生,所以我的意思是缺少一些简单的东西。现在,我只是想从标准输入中读取一些 JSON 并取回 AST 作为概念证明。
module JSONStuff where
import qualified Data.Aeson as JSON
import qualified Data.ByteString.Lazy.Char8 as Char
main :: IO ()
main = do
input <- Char.getContents
case JSON.eitherDecode input of
Left err -> putStrLn $ "Bad JSON: " ++ err
Right value -> do
putStrLn "Got:"
putStrLn value
我有这个 JSON 片段(JSONLint 说没问题):
{
"foo": 123
}
当我使用该输入执行程序时,我得到:
$ cat examples/object.json | runhaskell Main.hs
Bad JSON: when expecting a String, encountered Object instead
当我测试一个空数组的文件时,它说它“遇到了数组”。
所以我猜我在这里错过了某种转换步骤,或者我从标准输入错误地读取。你怎么看?