Arrays ELM如何解码json数组中的不同值
我有一个JSON数组,数组中有不同的值,我不知道如何解析它。以下是一个例子:Arrays ELM如何解码json数组中的不同值,arrays,json,parsing,decode,elm,Arrays,Json,Parsing,Decode,Elm,我有一个JSON数组,数组中有不同的值,我不知道如何解析它。以下是一个例子: [ { "firstname": "John", "lastname": "Doe", "age": 30 }, { "companyName": "Doe enterprise", "location": "NYC", "numberOfEmployee": 10 } ] 我的JSON是这样的,数组的第一个元素是用户,第二个元素是公司。 我在Elm中有
[
{
"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)
那么如何在我的FetchPass
函数中获得我的User
和Company
通行证呢?
有一些类似于Json.Decode.at
的东西,但它仅用于对象。
有没有一种方法可以做到这一点
decodeData =
Json.at [0] userDecoder
Json.at [1] companyDecoder
Json.at
也适用于数组索引。首先,您需要一个数据类型来保存用户和公司:
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)
import Json.Decode为Json公开((:=)
类型别名数据=
{用户:用户
,公司:公司
}
您需要为用户和公司提供简单的解码器:
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)