私は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
空の配列であるファイルをテストすると、「代わりに配列に遭遇しました」と表示されます。
したがって、ここである種の変換ステップが欠落しているか、標準入力から誤って読み取っていると推測しています。どう思いますか?