
互联网上的大部分数据都使用一种名为 JSON 的简单格式进行共享。JSON 由两种复合类型(数组和键值对)以及少量基本类型(64 位浮点数、字符串、null 和布尔值)组成。JSON 尽管简单易用,却能得到广泛应用,这本身就说明了一些问题。
{ "名称" : "新星光" , 年龄: 28 “能力” : [ “念动力” 、 “飞行” 、 “能量冲击波” ] }
有趣的是,JSON 与流行的 Go 语言默认提供的数据结构非常相似。Go 除了提供标准的基本数据类型外,还提供了数组/切片和映射(map)。这比 C 语言略胜一筹,因为 C 语言默认不提供映射。但它比 Java、C++、C# 以及许多其他编程语言要简单得多,因为这些语言的标准库已经涵盖了教科书中大部分的数据结构。
JSON 和 Go 语言中至少缺少一种显而易见的数据结构:集合(set)。由于对象不应该有重复的键,因此可以通过将键赋值给任意值(例如 true)来实现字符串集合。
{ " element1 " : true , " element2 " : true }
但我认为这是一种不太常见的模式。大多数情况下,当我们想要表示一组对象时,数组就足够了。我们只需要想办法处理重复项即可。
人们曾多次尝试向 JSON 添加更多概念,增加其复杂性,但这些尝试都未能取得显著成效。我认为这反映出 JSON 作为一种数据格式已经足够优秀。
我把任何能够表示 JSON 数据的格式,例如 YAML,都称为 JSON 完整数据格式。如果它至少与 JSON 等效,那么对于大多数问题来说就足够丰富了。
同样地,我建议新的编程语言应该力求完全兼容 JSON:它们应该提供一个包含键值对、数组和基本原始类型的映射。从这个角度来看,C 和 Pascal 编程语言都还不完全兼容 JSON。
原文: https://lemire.me/blog/2025/12/20/json-complete-data-format-and-programming-languages/