0

JSON 型の簡単な例を次に示します。

data Test = Test
  { name :: Text
  , age  :: Int
  } deriving (Show, Generic)

instance FromJSON Test

pipes-aeson を使用して、decodedレンズを使用してソケット経由で送信される JSON メッセージのストリームをデコードするにはどうすればよいですか? 例として、解析されたときにそれらを出力したいと思います:

main = connect "127.0.0.1" "8000" $ \(socket, _) -> $ runEffect $
  some use of zoom decoded? view decoded? >-> P.print
4

1 に答える 1

3

decoded( の 1 つPipes.Aeson.Unchecked) は、生のバイトの Producer を解析されたFromJSON値の Producer に変換するレンズです。

そのため、最初にパッケージのfromSocket関数を使用してソケットからバイトの Producer を作成する必要があります。pipes-networkこのようなもの:

-- to help with type inference
printTest :: (MonadIO m) => Consumer' Test m r
printTest = P.print

main = do
    connect "127.0.0.1" "8000" $ \(socket, _) -> $ runEffect $
        view decoded (fromSocket socket 4096) >-> printTest
    return ()
于 2015-03-16T07:56:08.230 に答える