我正在尝试使用 json 库解析 JSON 字符串。此代码在 GHCI 中完美运行:
import Text.JSON as JS
JS.decode "{}" :: Result JSValue
但是当我在编译的程序中使用相同的代码时:
case JS.decode "{}" of
JS.Ok value -> putStrLn value
JS.Error err -> error err
它无法解析字符串:
Unable to read String
我怀疑这只是我在做一些愚蠢的事情,但我不知道是什么......
任何想法都非常欢迎!
更新:
我写了这段代码,看看是不是应用程序的其他部分导致了问题:
import qualified Text.JSON as JS
main :: IO ()
main = do
case JS.decode "{}" of
JS.Ok value -> putStrLn value
JS.Error err -> error err
但是我得到了同样的错误:
test: Unable to read String
它是用 GHC 7.0.3 编译的,源代码是用 vim 编辑的。然而,即使是从应用程序外部传入的字符串数据也会产生相同的错误。现在真的没想法了……
最佳答案
使用 print
而不是 putStrLn
,仅适用于字符串:
import qualified Text.JSON as JS
main :: IO ()
main = do
case JS.decode "{}" of
JS.Ok value -> print (value :: JSValue)
JS.Error err -> error err
关于json - 可以使用 GHCI 中的 json 包解析 JSON,但使用 GHC 编译时不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8587407/