言据(YanJu)1.2.0 是言序生态的统一配置与数据交换基础,文件后缀为 .yj。它保留 JSON 简单、递归、易交换的值模型,同时使用中文结构词,提供确定性序列化、结构校验、路径操作、可校验补丁、格式转换、显式资源限制以及换行分帧流。
据【
「项目」:「言据」,
「后缀」:「.yj」,
「格式版本」:1,
「实现语言」:「言序」,
「稳定」:真,
「能力」:列【「配置」,「交换」,「流」】,
「备注」:空
】
.yj 的解析器和序列化器全部由言序实现,没有 Rust 版言据解析器,也不借用 JSON 解析言据。JSON 互转只在明确调用转换接口时复用言序标准 JSON 模块。
| 数据 | 言据写法 | 言序值 |
|---|---|---|
| 据 | 据【「键」:值】 |
典 |
| 列 | 列【值,值】 |
列 |
| 文字 | 「青青子衿」 |
文 |
| 数值 | 7、-3.14 |
数 |
| 逻辑 | 真、假 |
理 |
| 空值 | 空 |
空 |
言据只接受全角 :、, 和 【】。据键必须是文字,重复键与尾随逗号会被拒绝;规范序列化按键排序,因而相同数据可以得到稳定文本。完整定义见言据格式规范 v1。
需要言序 1.1.6 或更高版本。在应用的 言序.toml 格式 2 中声明 Git 依赖:
[依赖]
言据 = { git = "https://github.com/yanxulang/yanju.git", 修订 = "v1.2.0", 版 = "^1.2" }然后从包的显式默认导出导入:
引「包:言据」为 言据;
定 配置:典 为 言据.解析据("据【「语言」:「言序」,「版本」:1】");
言 言据.美化(配置);
言 言据.查询文(配置,「语言」);
在源码仓库内也可以直接导入 src/言据.yx。
规则自身也是言据,可随配置一同交换和审阅:
定 规则:典 为 {
「类型」:「据」,
「必需」:【「端口」】,
「允许额外」:假,
「属性」:{
「端口」:{「类型」:「数」,「最小」:1,「最大」:65535,「整数」:真}
}
};
定 各错:列 为 言据.检查类型({「端口」:70000},规则);
支持类型或联合类型、枚举、数值范围、整数、长度、列项目、必需键、属性与额外键策略。详见校验规则 v1。
定 端口 为 言据.查询文(配置,「服务/端口」);
定 新配置:典 为 言据.设定据(配置,【「服务」,「端口」】,9090);
定 最终:典 为 言据.合并据(默认配置,用户配置);
定 各差:列 为 言据.差异(默认配置,最终);
定 已重放 为 言据.应用补丁(默认配置,各差);
路径使用全角斜线 /;\/ 表示键内斜线,\\ 表示键内反斜线。设定、合并和补丁都深复制容器,不改写输入。列合并可选择 替换、连接 或 去重。差异项按路径稳定输出,包含 新增、删除 或 修改及新旧值;补丁重放会校验旧值,拒绝覆盖并发修改。
默认解析限制为 1,048,576 个 Unicode 字符、64 层容器和全树 100,000 个容器项。服务端应按协议需要进一步收紧:
定 值 为 言据.解析受限(正文,{
「最大字符」:65536,
「最大深度」:24,
「最大容器项」:4096
});
定 所流 为 言据.流式解析器().限制({「最大字符」:8192});
未知限制键或非正整数配置会返回 YJ_LIMIT_CONFIG;超限分别返回 YJ_SIZE、YJ_DEPTH 或 YJ_ITEMS。
推荐 HTTP 内容类型为 application/vnd.yanxu.yanju; version=1。是言据媒体类型 会拒绝其他显式格式版本,且不会把 application/json 误认成言据。
所有数据库都可用 数据库文本 把值写为确定性的 TEXT/CLOB;自数据库文本 恢复值,自规范数据库文本 可用于要求存量文本已经规范化的严格读取。数据库原生 JSON 仍是另一种表示,不等同于 .yj 文本。
定 紧凑:文 为 言据.压缩(原文);
定 四格:文 为 言据.格式化(原文,4);
定 来自JSON:典 为 言据.自JSON据(JSON文);
定 TOML文:文 为 言据.转TOML(来自JSON);
JSON 支持言序标准 JSON 的完整原生值范围。TOML 接口面向配置互操作,支持单行键值、表、点分键、基础/字面文字、逻辑、十进制数、列、行内表和注释;日期时间、非十进制数、指数、多行文字、表列及 TOML 不可表示的空值会明确报 YJ_TOML,避免静默损失。
定 所流 为 言据.流式解析器();
定 已完成:列 为 所流.送入(第一块);
逐 值 于 所流.送入(第二块)则 处理(值);终
逐 值 于 所流.结束()则 处理(值);终
言据流 v1 使用一行一个完整言据值的分帧方式,支持任意文字块边界和无换行的末帧。详见言据流规范 v1。
解析、类型、校验规则、路径、合并、格式、序列化、JSON、TOML、流和文件错误使用稳定的 YJ_* 代码。无需异常控制流时可使用:
定 结果:典 为 言据.尝试解析(原文);
若 非 结果【「成功」】则
言 结果【「错误」】【「代码」】;
终
捕获到的 误 可传给 错误详情,得到 代码、消息、输入位置、数据路径、源位置与踪迹。
| 分组 | 接口 |
|---|---|
| 核心 | 解析、解析据、解析列、校验、序列化、美化、读取、写入 |
| 限制 | 默认限制、规范限制、解析受限、校验受限、读取受限 |
| 格式 | 美化为、格式化、压缩、是规范文本 |
| 路径 | 路径分段、路径呈现、查询、查询文、路径存在、查询或、设定、设定据 |
| 数据 | 深复制、相同、合并、合并据、合并为、差异、应用补丁 |
| 校验 | 检查类型、符合规则、断验 |
| 转换 | 自JSON、自JSON据、自JSON列、转JSON、自TOML、转TOML及文本直转接口 |
| 流 | 流式解析器、解析流、序列化流 |
| 集成 | 媒体类型、版本媒体类型、是言据媒体类型、数据库文本、自数据库文本 |
| 错误 | 尝试解析、错误详情 |
精确签名见 API 文档,任务式教程见使用指南,版本边界见兼容策略。文件接口受调用程序 言序.toml 中 [权限].文件 约束;纯文字与内存 API 不需要文件、网络、进程或原生权限。
在仓库根目录执行:
yanxu 查 src/言据.yx
yanxu 试 tests
yanxu 字节 tests/解析与往返.yx
yanxu benchmarks/性能.yx解析与序列化使用字符列和片段联结,避免在主要循环中反复复制逐渐增长的文字;基准输出本身是言据,便于记录不同版本的结果。CI 会静态检查全部模块,并在 Linux、macOS 与 Windows 上运行规格及树解释器/字节码 VM 对照。
src/言据.yx 稳定公共入口
src/核心.yx `.yj` 解析、序列化与文件接口
src/类型校验.yx 声明式校验
src/路径.yx 路径操作
src/操作.yx 深比较、合并与差异
src/转换.yx JSON/TOML 互转
src/错误.yx 结构化错误协议
规范/ 格式、校验规则与流规范
tests/ 规格与回归测试
benchmarks/ 可重复微基准
examples/ `.yj` 与言序调用示例
docs/API.md 公共接口参考
言序.toml 言序包清单
- 格式 v1 的数值限于言序安全十进制范围,不接受指数形式、NaN 或无穷值。
- 流协议是一行一帧,不是任意多行文档流;帧内换行必须转义。
- TOML 转换刻意只覆盖不会静默丢失的配置子集。
- 媒体类型为项目约定,尚未向 IANA 注册。
言据按 MIT 许可证开放。格式或公共 API 的不兼容改动必须提升主版本。