json - 榆树用数组解码json对象
问题描述
我是榆树的新手。我试图从获取响应中获取数据。
现在我正在尝试为此制作解码器。我有这样的json:
{
data: [
{
"price" = 300.5
},
{
"price" = 1005
}
]
}
我所需要的只是获得最低价格并退货。(至少返回每个价格)。
现在我堆叠在 Decode.index 上。
priceDecoder : Decode.Decoder String
priceDecoder =
Decode.field "data" Decode.list
接下来我该怎么办?
解决方案
这个问题本身有几个问题。首先,你没有发布你得到的错误。我得到的错误是这样的:
The 2nd argument to `field` is not what I expect:
25| Decode.field "data" Decode.list
^^^^^^^^^^^
This `list` value is a:
Decode.Decoder a -> Decode.Decoder (List a)
But `field` needs the 2nd argument to be:
Decode.Decoder a
其次,您发布的 JSON 无效,data
应该用引号括起来,属性和值应该用:
, not分隔=
。
第三,类型priceDecoder
似乎错误,因为 JSON 不包含String
数据,或者您没有指定您也想Float
将String
. 我会假设类型是错误的。
因此,您(或至少我)得到的错误说这list
是一个函数Decoder a -> Decoder (List a)
,而它只需要一个Decoder a
值。这是因为list
期望将 aDecoder a
传递给它,它将用于解码列表中的每个项目。
我们将使用的解码器是Decode.field "price" Decode.float
,它将对象的“价格”字段解码为Float
.
我还将更改priceDecoder
from的类型Decoder String
到Decoder (List Float)
,因为价格是 aFloat
并且我们正在解码其中的 a List
,而不仅仅是获取第一个或最后一个值或类似的东西。我认为这就是您想要的,因为您说“至少返回每个价格”。
priceDecoder
我们得到的是:
priceDecoder : Decode.Decoder (List Float)
priceDecoder =
Decode.field "data" (Decode.list (Decode.field "price" Decode.float))
推荐阅读
- sql - 使用 WITH INSERT INTO
- variables - Ansible 中嵌套变量的语法错误
- mysql - 从用户关注者中检索最关注的用户
- excel - 将具有唯一标识符的多行转换为一列
- node.js - 如何在 promise {} 对象中获取数据
- list - Flutter 将 Firestore 数组值返回到列表
- java - How to Post map data inside ArrayList as form-data by postman
- c# - 从具有不同名称的成员实现接口成员
- php - 在while循环中生成多个空白锚标签
- c# - 进行负载测试时未使用 HTTP.SYS 正确配置获取服务器证书