gpt4 book ai didi

Elm:将 Json 解码为简单的记录结构

转载 作者:行者123 更新时间:2023-12-04 15:51:57 25 4
gpt4 key购买 nike

努力寻找正确的方法来完成我的解码器。我从表单数据开始

[{_id:'interests', [{obj1}, {obj1}]}
,{_id:'countries', [{obj2}, {...}]}
,{_id:'sections', [{obj3}, {...}]}]

我想进入解码器摘要,其中

type alias Summary =
{ sections : List Section
, interests : List Interest
, countries : List Country
}

到目前为止,我能得到的最好结果是这种输出:

[ Interests (List Interest), Countries (List Country), Sections (List Section)]

但这仍然需要一些相当脆弱的模式匹配(依赖于数组的一致顺序因此对于 0.16 是非常有问题的)。为此,我使用

summaryItemDecoder : String -> Decoder SummaryInfo
summaryItemDecoder item =
let dec =
case item of
"sections" -> Json.map Sections sectionsDecoder
"interests" -> Json.map Interests interestsDecoder
"countries" -> Json.map Countries countriesDecoder
in ("data" := dec)

listSummaryDecoder : Decoder (List SummaryInfo)
listSummaryDecoder =
("_id" := string) `Json.andThen` summaryItemDecoder
|> list

完整代码 here .感谢最后的提示

最佳答案

我不确定你能做得更好;您正在尝试解析一种可以表达您无法在您的类型中表示的内容的格式,因此您唯一的选择就是失败。

为了满足模式匹配神,也许在fail 解码器中删除一个otherwise 子句? ( http://package.elm-lang.org/packages/elm-lang/core/3.0.0/Json-Decode#fail )

关于Elm:将 Json 解码为简单的记录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33821602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com