代数数据类型是准确描述数据的便捷方式。 JSON中的产品类型没有问题。但是,不清楚sum-type是什么,所以如何在JSON中表示变体类型?
答案 0 :(得分:3)
也许使用带有value
和tag
属性的对象表示法? E.g:
{
"someVariant": {
"value": 25,
"tag": "currentFormOfTheVariant"
}
}
对象和特殊格式的字符串基本上是您在JSON中自描述数据类型的唯一真正选项。
答案 1 :(得分:3)
以下面的变体类型为例。
data Tree = Empty
| Leaf Int
| Node Tree Tree
在JSON中,您可以使用以下三种形式来指定三种变体。
Variant | JSON
--------+---------------
Empty | null
--------+---------------
Leaf | {
| "leaf": 7
| }
--------+---------------
Node | {
| "node": [
| <tree>,
| <tree>
| ]
| }
基本上,使用具有单个键值对的JSON对象,其中键是选定的变体。