我在 PureScript 中使用 argonaut 库对 JSON 进行解码和编码。我无法编写一个实现来解码和编码这样的 json 字段:
“字段”:[3,“文本”]
这是一个具有不同数据类型的数组。如何在 argonaut 库中实例化它?
我在 PureScript 中使用 argonaut 库对 JSON 进行解码和编码。我无法编写一个实现来解码和编码这样的 json 字段:
“字段”:[3,“文本”]
这是一个具有不同数据类型的数组。如何在 argonaut 库中实例化它?
如果你有固定数量的不同类型的值,这通常(在计算机科学和数学中)称为“元组”,当它们只有两个时有一个特殊的名称——“对”。
JavaScript 没有元组的概念,诚然,在没有静态类型的情况下它没有什么意义。所以传统上 JavaScript 中的元组被编码为数组。
但是 PureScript 确实有这样的概念!在标准库中,它被称为 - 惊喜!- Tuple
(然后有不同数量元素的变体 - Tuple3
, Tuple4
, 等等)
Argonaut 遵循 JavaScript 约定:它将元组编码为数组。因此,如果您只是将字段键入为Tuple Int String
,它将起作用:
type MyObj = { field :: Tuple Int String }
x :: Either JsonDecodeError MyObj
x = parseJson "{ \"field\": [3, \"text\"] }" >>= decodeJson
main :: Effect Unit
main =
logShow x -- prints Right { field: Tuple 3 "text" }