首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Aeson将数组转换为对象

Aeson将数组转换为对象
EN

Stack Overflow用户
提问于 2018-03-12 11:26:21
回答 1查看 125关注 0票数 0

Data.Aeson FromJSON实例将数组转换为对象的最佳方式是什么:

代码语言:javascript
运行
复制
import Data.Aeson

data MixArray = MixArray {                                                                                                                                                                                         
  vStr :: String,                                                                                                                                                                                                   
  vNum :: Int,
  vBool :: Bool                                                                                                                                                                                                  
} deriving Show   

main = do
  jsonStr = ["a",1,true]
  mix <- eitherDecode $ jsonStr :: IO (Either String [MixArray])
  show mix

至:

代码语言:javascript
运行
复制
MixArray { vStr = "a", vNum = 1, vBool= true}
EN

回答 1

Stack Overflow用户

发布于 2018-03-12 12:46:55

您可以对列表和Value类型重用FromJSON实例,然后在模式匹配后构造您的类型。如果模式匹配失败,解析器也会失败。

代码语言:javascript
运行
复制
import Data.Text (unpack)

instance FromJSON MixArray where
  parseJSON jsn = do
    [String s, Number n, Bool b] <- parseJSON jsn
    return MixArray { vStr = unpack s, vNum = truncate n, vBool = b }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49227754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档