C++-集群聊天室(1):Json

张开发
2026/4/18 18:10:08 15 分钟阅读

分享文章

C++-集群聊天室(1):Json
一、JSON 是什么JSON是一种轻量级的文本数据交换格式它虽然源自 JavaScript但现在已经是独立于编程语言的通用标准几乎所有主流编程语言Python/Java/Go/PHP 等都支持 JSON 的解析和生成。可以把 JSON 理解为一种人类可读、机器易解析的 “数据说明书”专门用来在不同系统之间传递结构化数据比如前端和后端、不同服务之间。二、JSON 核心语法规则JSON 有严格的语法规范写错一点就会解析失败核心规则如下数据结构只有两种核心结构键值对集合对象 / 字典用{}包裹键必须是双引号包裹的字符串值和键之间用:分隔多个键值对用,分隔。有序值列表数组 / 列表用[]包裹元素之间用,分隔元素可以是任意合法的 JSON 数据类型。支持的数据类型注意事项不能用单引号包裹键或字符串不能写注释这是和 JavaScript 对象的核心区别之一最后一个键值对 / 数组元素后面不能加逗号不能包含函数、日期、正则等特殊类型如需传递需先转为字符串。JSON 的常见使用场景前后端数据交互前端Vue/React通过 AJAX/Fetch 请求后端接口后端返回 JSON 格式数据配置文件替代 XML/INI比如package.jsonNode.js、tsconfig.jsonTypeScriptAPI 接口数据格式绝大多数 RESTful API 都用 JSON 作为数据交换格式数据存储轻量级的数据存储比如小项目的配置、临时数据。三、json和protobuf的区别JSON你已经熟悉的文本型数据交换格式核心目标是易读、通用、开发便捷是人类友好型的 “数据说明书”。Protobuf谷歌开发的二进制数据交换格式核心目标是极致的性能小体积、快解析是机器友好型的 “压缩数据包”。核心区别对比关键细节拆解1. 体积和性能对比直观例子假设要传输如下用户数据姓名张三年龄25城市深圳JSON 格式约 40 字节{name:张三,age:25,city:深圳}冗余{}//:都是无意义的文本开销且字段名如name会重复传输。Protobuf 格式约 10 字节Protobuf 不会存储字段名而是用预定义的 “字段编号”比如1代表name2代表age映射数据且数字、字符串都用二进制压缩存储体积仅为 JSON 的 1/4 ~ 1/10。解析速度上Protobuf 比 JSON 快 5~10 倍尤其数据量大时因为二进制无需字符串解析直接按预定义结构映射到内存对象。语法和使用方式差异JSON无协议直接用无需任何前置操作拿到数据就能解析 / 生成比如 Python 里直接json.loads()解析开发效率极高。Protobuf先定义协议再用Protobuf 必须先编写.proto协议文件定义数据结构再通过工具生成对应语言的代码才能序列化 / 反序列化。

更多文章