如何在JSON中表示变量(总和类型)?

如何在JSON中表示变量(总和类型)?,json,functional-programming,variant,Json,Functional Programming,Variant,代数数据类型是准确描述数据的方便方法。JSON中的产品类型没有问题。但是,尚不清楚什么是求和类型,因此如何在JSON中表示变量类型?可能使用带有值和标记属性的对象表示法?例如: { "someVariant": { "value": 25, "tag": "currentFormOfTheVariant" } } 对象和特殊格式的字符串基本上是JSON中自描述数据类型的唯一实际选项。以以下变量类型为例 data Tree = Empty

代数数据类型是准确描述数据的方便方法。JSON中的产品类型没有问题。但是,尚不清楚什么是求和类型,因此如何在JSON中表示变量类型?

可能使用带有
标记
属性的对象表示法?例如:

{
    "someVariant": {
        "value": 25,
        "tag":   "currentFormOfTheVariant"
    }
}

对象和特殊格式的字符串基本上是JSON中自描述数据类型的唯一实际选项。

以以下变量类型为例

data Tree = Empty
          | Leaf Int
          | Node Tree Tree
在JSON中,您可以使用以下三种形式来指定这三种变体

Variant | JSON
--------+---------------
Empty   | null
--------+---------------
Leaf    | {
        |   "leaf": 7
        | }
--------+---------------
Node    | {
        |   "node": [
        |     <tree>,
        |     <tree>
        |   ]
        | }
Variant | JSON
--------+---------------
空|空
--------+---------------
叶|{
|“叶子”:7
| }
--------+---------------
节点|{
|“节点”:[
|     ,
|     
|   ]
| }

基本上,使用带有单个键值对的JSON对象,其中键是选定的变量。

@Timothy:编辑澄清了。看起来您的意思是
Leaf->
,这些部分是JSON的一部分。但通过编辑,它看起来更像是一个两列布局(您可能希望进一步明确)