Bou*_*TAC 3 arrays parsing json decode elm
我有一个在数组中具有不同值的JSON数组,我不知道如何解析它.这是一个例子:
[
{
"firstname": "John",
"lastname": "Doe",
"age": 30
},
{
"companyName": "Doe enterprise",
"location": "NYC",
"numberOfEmployee": 10
}
]
Run Code Online (Sandbox Code Playgroud)
所以我的JSON是这样的,数组的第一个元素是用户,第二个元素是公司.我有相同的榆树:
type alias User =
{ firsname : String
, lastname : String
, age : Int
}
type alias Company =
{ companyName : String
, location : String
, numberOfEmployee : Int
}
Run Code Online (Sandbox Code Playgroud)
然后:Task.perform FetchFail FetchPass (Http.get decodeData url)
.
那么我该如何获取User
并Company
传递我的FetchPass
功能呢?有一些东西,Json.Decode.at
但它只是对象.有没有办法做这样的事情?
decodeData =
Json.at [0] userDecoder
Json.at [1] companyDecoder
Run Code Online (Sandbox Code Playgroud)
Json.at
适用于数组索引.首先,您需要一种Data
类型来容纳用户和公司:
import Json.Decode as Json exposing ((:=))
type alias Data =
{ user : User
, company : Company
}
Run Code Online (Sandbox Code Playgroud)
你需要为用户和公司提供简单的解码器:
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)
Run Code Online (Sandbox Code Playgroud)
最后,您可以使用Json.at
获取这些数组索引的值.与您的示例的不同之处在于您需要传递包含整数索引而不是int的字符串:
dataDecoder : Json.Decoder Data
dataDecoder =
Json.object2 Data
(Json.at ["0"] userDecoder)
(Json.at ["1"] companyDecoder)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
478 次 |
最近记录: |