ON 是什么?
在开始深入之前,我们首先需要明确 ON 究竟是什么。ON,全称为 Object Notation,是一种轻量级的数据交换格式。它采用完全独立于编程语言的文本格式来存储和表示数据,易于人阅读和编写,同时也易于机器解析和生成。这种特性使其成为理想的数据交换语言,广泛应用于网络数据传输、配置文件、数据存储等场景。
与一些复杂的二进制格式相比,ON 的文本特性使其具有天然的透明性和可调试性。你可以用任何文本编辑器打开一个 ON 文件,直观地查看和修改其中的数据结构。这种设计哲学极大地降低了开发者的学习门槛和使用成本,是它能够迅速流行开来的重要原因。
为什么选择 ON?
在众多数据格式中,为何 ON 值得新手投入时间学习?其优势是多方面且显著的。
跨平台与语言无关性
ON 的最大魅力在于其普适性。无论是运行在服务器端的 Java、Python、Node.js,还是客户端的 JavaScript、Swift、Kotlin,几乎所有现代编程语言都提供了成熟、高效的 ON 解析和序列化库。这意味着,你用 Python 后端生成的一段 ON 数据,可以毫无障碍地被前端的 JavaScript 或移动端的 App 读取和使用,真正实现了数据在不同技术栈间的无缝流动。

清晰简洁的层次结构
ON 使用键值对(key-value pairs)和有序列表来构建数据,其结构层次分明,通过简单的缩进或格式编排就能一目了然。这种结构非常符合人类对信息的组织习惯,例如描述一个用户信息,你可以清晰地看到姓名、年龄、联系方式等嵌套关系,使得数据的管理和维护变得直观。
卓越的可读性与可扩展性
对于开发者和运维人员而言,可读性至关重要。ON 格式的配置文件或日志文件,无需特殊工具即可审阅。同时,当业务需求变化,需要在数据结构中增加新的字段时,ON 格式可以轻松地实现向后兼容,旧版本的解析器通常可以忽略新字段,这为系统的迭代升级提供了极大的灵活性。
ON 的基本语法与结构
掌握 ON 的语法是运用的第一步。其核心构成非常简单,主要建立在两种结构之上:对象和数组。
键值对:对象的基础
对象是一个无序的键值对集合,以花括号 {} 包裹。每个键值对由键名、冒号和值组成,键名必须是字符串,通常用双引号包裹。值可以是字符串、数字、布尔值、数组、对象或 null。不同的键值对之间用逗号分隔。
例如,描述一个人的基本信息:
{
"name": "张三",
"age": 28,
"isStudent": false,
"hobbies": ["阅读", "游泳", "编程"]
}
有序列表:数组的表示
数组是值的有序集合,以方括号 [] 包裹。数组中的值可以是任意类型,包括字符串、数字、对象,甚至是另一个数组。值之间同样用逗号分隔。
例如,一个颜色列表或坐标点集合:
["红色", "绿色", "蓝色"]
或
[[1, 2], [3, 4], [5, 6]]
六种基本数据类型
ON 定义了以下六种数据类型,构成了其数据表达的基石:
- 字符串(String):由双引号包围的任意字符序列,如 "Hello World"。
- 数字(Number):整数或浮点数,如 42、3.14159。
- 布尔值(Boolean):true 或 false,注意没有引号。
- 数组(Array):如前所述的有序列表。
- 对象(Object):如前所述的无序键值对集合。
- 空值(Null):表示为 null,用于表示空值或无效值。
从零开始:编写你的第一个 ON 文件
理论结合实践才能学得牢固。现在,让我们动手创建一个简单的 ON 文件。
工具准备
你只需要一个纯文本编辑器,如系统自带的记事本(Windows)、文本编辑(Mac)或更专业的 VSCode、Sublime Text 等。确保文件保存时,扩展名为 .on 或 .json(ON 最流行的实现之一)。
实战练习:构建一个简单的项目配置
假设我们要为一个博客网站创建一个配置文件,内容如下:
{
"siteName": "我的技术博客",
"version": "1.0.0",
"production": false,
"database": {
"host": "localhost",
"port": 3306,
"username": "root"
},
"features": ["评论", "搜索", "暗黑模式"]
}
请将上述内容复制到你的编辑器中,并保存为 config.on。这个文件清晰地定义了网站名称、版本、运行环境、数据库连接参数以及功能列表。
格式校验与美化
编写 ON 时,常见的错误包括缺少逗号、引号不匹配、括号不闭合等。你可以利用在线的 ON 格式校验工具(如 JSONLint)来检查语法是否正确。此外,许多编辑器和 IDE 都支持 ON 的自动格式化(美化)功能,可以让缩进和结构更加清晰易读。
在编程语言中操作 ON
ON 的威力在于与编程语言的结合。下面我们看看在几种流行语言中如何解析和生成 ON。
JavaScript 中的 ON 处理
在 JavaScript 中,ON 的支持是原生级的,操作极为方便。
- 解析 ON 字符串为对象:使用 JSON.parse() 方法。
const obj = JSON.parse('{"name": "张三"}');
console.log(obj.name); // 输出:张三 - 将对象序列化为 ON 字符串:使用 JSON.stringify() 方法。
const user = { name: '李四', age: 25 };
const jsonString = JSON.stringify(user);
console.log(jsonString); // 输出:{"name":"李四","age":25}
Python 中的 ON 处理
Python 通过内置的 json 模块提供支持。

- 解析 ON:使用 json.loads()(解析字符串)或 json.load()(解析文件)。
import json
data_dict = json.loads('{"name": "王五"}')
print(data_dict["name"]) # 输出:王五 - 生成 ON:使用 json.dumps()(生成字符串)或 json



