json - 可以使用 GHCI 中的 json 包解析 JSON,但使用 GHC 编译时不行

标签 json haskell

我正在尝试使用 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/

相关文章:

Haskell:Map.empty 出现 "Qualified name in binding position"错误

javascript - ExtJS 4.2.0 在网格中加载嵌套 JSON 数据

javascript - 如何重新定位 JSON 结构键和值?

haskell - Haskell 中是否有一个函数可以按以下方式对列表的元素进行分组?

haskell - 如何找到列表中最长的单词?

haskell - 如何使用 Stack/Cabal 构建早期部分的程序输出作为同一构建后续部分的源?

javascript - 将文本框值传递给 JS 函数以转换为 JSON

java - jackson :通过 View 改变 JSON 属性值

jquery ui组合框从菜单项创建数组

haskell - 使用 Beam 进行子查询