gpt4 book ai didi

elm - 通过 Elm 端口将对象转换为 JSON 解码器

转载 作者:行者123 更新时间:2023-12-04 12:49:18 26 4
gpt4 key购买 nike

我通过端口将一组对象传递到我的 Elm 应用程序中。数组中对象之一的示例是:

{
FullName: 'Foo Bar',
Location: 'Here'
}

如您所见,对象中的键以大写开头,因此我需要在 Elm 中对它们进行解码。在我的 Elm 代码中,我有一个 typePerson
type alias Person =
{ fullName : String
, location : String
}

和港口:

port getPeople : (List Json.Decode.Value -> msg) -> Sub msg

最后我有一个解码器(我正在使用 Elm Decode Pipeline )将数据解析为 Person类型。

peopleDecoder : Decoder Person
peopleDecoder =
decode Person
|> required "FullName" string
|> required "Location" string

我的问题是如何将传入端口数据映射到 Person类型?我知道我可以在 JS 中做到这一点,但我宁愿在我的 Elm 代码中做到这一点。

最佳答案

Json.Decode.decodeValue 可以解码 Json.Decode.Value ,但它返回 Result String (List Person) .

如果你这样定义你的消息:

type Msg
= GetPeople (Result String (List Person))

您可以像这样设置订阅:

port getPeople : (Json.Decode.Value -> msg) -> Sub msg

subscriptions : Model -> Sub Msg
subscriptions model =
getPeople (GetPeople << decodeValue (list peopleDecoder))

(请注意,端口中的第一个参数已更改为 Value 而不是 List Value )

关于elm - 通过 Elm 端口将对象转换为 JSON 解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41251136/

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