我研究了一种方法来获取我从API中获取的JSON响应体中的值的原始值。
这是我的代码:
{-# LANGUAGE OverloadedStrings #-}
import Control.Lens
import Data.Aeson.Lens (_String, key)
import Data.Aeson.Lens (_Number, key)
import Network.Wreq
conditionsQuery2 :: String -> String
conditionsQuery2 company =
"https://api.iextrading.com/1.0/stock/" ++ company ++ "/quote"
main :: IO()
main = do
print "What's the company name?"
company <- getLine
r <- get (conditionsQuery2 company)
putStrLn "The full company's name is: "
print $ r ^. responseBody . key "companyName" . _String
putStrLn "And the stock price is: "
print $ r ^? responseBody . key "latestPrice" . _Number
我得到的问题是最后一行print $ r ^? responseBody . key "latestPrice" . _Number
,因为我获得的价值是Just 166.9
给定的股票价格(仅作为示例)。我知道Haskell中有一个Maybe
类型,但是在从JSON响应中获取数值的上下文中,有没有办法轻松访问该值?或者我是否需要根据here与Just a -> putStrLn $ "the value: " ++ show a
描述的内容写一些内容?
提前致谢。