我想從控制臺輸入一個字串并輸出一個 JSON 字串。
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Aeson
import Data.Map.Strict
main :: IO ()
main = interact $ encode
此代碼失敗。當然,我看到encodehas typeToJSON a => a -> Data.ByteString.Lazy.Internal.ByteString和interact'take String -> String,但這就是我使用OverloadedStrings.
我怎么解決這個問題 ?對String?
uj5u.com熱心網友回復:
OverloadedStrings 僅適用于字串文字。因此,它將"foo"運算式轉換為fromString "foo".
但是您可以使用它來將其轉換為ByteString. 可以先使用decodeUtf8 :: ByteString -> Text將 轉換ByteString為 a Text,然后使用type的String資料建構式Value,再對資料進行編碼,所以:
模塊主要在哪里
import Data.Aeson(Value(String), encode)
import qualified Data.ByteString as B
import Data.ByteString.Lazy(toStrict)
import Data.Text.Encoding(decodeUtf8)
main :: IO ()
main = B.interact (toStrict . encode . String . decodeUtf8)
因此,這會將輸入轉換為 JSON 字串文字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/440934.html
上一篇:Haskell顯示錯誤?
下一篇:根據過濾器或映射重新定義放置功能
