JSON支持以下数据结构(等同于Java):标量,数组/列表和映射。
一个Set
不支持出的现成的JSON。
我考虑了几种用JSON表示集合的方法:
[1]-作为列表
然而,名单都有自己的排序,所以下面的两个列表,["a", "b"]
并且["b", "a"]
是不相等的名单,但他们应该是平等的套。
[2]-作为地图
使用地图的键集,并忽略值。
但是再次,使用标准比较,两者与地图不同:
{"a": "foo", "b": "bar"}
, {"a": null, "b": null}
[3]-作为地图,具有特殊价值
取一个标量,说0
或说,null
并使其成为地图中每个键的值:
{"a": 0, "b": 0}
这样,即使更改了键顺序,在标准比较工具下,对象也是相等的。
但是,此技术会使用不相关的数据污染JSON文档。
[4]-作为有序列表
回到第一个建议,但是这次作为有序列表。这种解决比较问题。
但是,我们还应该记住排序的复杂性,并且映射符号可以处理重复项,而排序列表则不能。例:
{"a": 400, "a": 9}
被处理为{"a": 9}
,但["g", "g"]
总是这样["g", "g"]
。
说了这么多,在我看来,列表符号更清晰了,但是映射符号对键重复更健壮,并且很难使特殊值保持一致(尽管这null
似乎是一个不错的选择)。
你怎么看?您将如何用JSON表示集合?
聚苯乙烯
请注意,这个问题仅与JSON有关。我知道可以使用其他格式,例如yaml。仍然...