gpt4 book ai didi

arrays - ELM 如何解码 json 数组中的不同值

转载 作者:行者123 更新时间:2023-12-03 21:32:36 25 4
gpt4 key购买 nike

我有一个 JSON 数组,数组中有不同的值,但我不知道如何解析它。这是一个例子:

[
{
"firstname": "John",
"lastname": "Doe",
"age": 30
},
{
"companyName": "Doe enterprise",
"location": "NYC",
"numberOfEmployee": 10
}
]

所以我的JSON是这样的,数组的第一个元素是用户,第二个是公司。我在 Elm 中有等效项:

type alias User =
{ firsname : String
, lastname : String
, age : Int
}

type alias Company =
{ companyName : String
, location : String
, numberOfEmployee : Int
}

然后:Task.perform FetchFail FetchPass (Http.get decodeData url)

那么如何让我的 UserCompany 传入我的 FetchPass 函数?有类似 Json.Decode.at 的东西,但它仅适用于对象。有办法做这样的事情吗?

decodeData =
Json.at [0] userDecoder
Json.at [1] companyDecoder

最佳答案

Json.at 也适用于数组索引。首先,您需要一个 Data 类型来保存用户和公司:

import Json.Decode as Json exposing ((:=))

type alias Data =
{ user : User
, company : Company
}

并且您需要为用户和公司提供简单的解码器:

userDecoder : Json.Decoder User
userDecoder =
Json.object3 User
("firstname" := Json.string)
("lastname" := Json.string)
("age" := Json.int)

companyDecoder : Json.Decoder Company
companyDecoder =
Json.object3 Company
("companyName" := Json.string)
("location" := Json.string)
("numberOfEmployee" := Json.int)

最后,您可以使用 Json.at 获取那些数组索引处的值。与您的示例的不同之处在于,您需要传递一个包含整数索引而不是 int 的字符串:

dataDecoder : Json.Decoder Data
dataDecoder =
Json.object2 Data
(Json.at ["0"] userDecoder)
(Json.at ["1"] companyDecoder)

关于arrays - ELM 如何解码 json 数组中的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39540898/

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