生态言据

言据 1.2

使用言序生态的规范数据格式完成受限解析、校验、路径、补丁、流、HTTP 与数据库交换。

言据(YanJu)1.2.0 是言序生态的配置与数据交换基础,文件扩展名为.yj。它使用与 JSON 相同的递归值模型,但以和全角结构符号表达数据。解析器、 序列化器、校验和补丁全部由言序实现;JSON 只在显式转换时参与。


  「项目」「言据」
  「格式版本」1
  「库版本」「1.2.0」
  「稳定」
  「能力」「配置」「补丁」「流」「HTTP」「数据库」

安装稳定标签

最低言序为 1.1.6。格式版本与库版本独立演进:1.2.0 继续读写格式 v1。

[依赖]
言据 = { git = "https://github.com/yanxulang/yanju.git", 修订 = "v1.2.0", 版 = "^1.2" }
yanbao install
「包:言据」 言据;

 配置: 言据.解析据"据【「语言」:「言序」,「版本」:1】");
 言据.查询文(配置,「语言」);
 言据.美化(配置);

1.2 稳定能力

  • 确定性规范序列化、UTF-8 文件读写和格式检查。
  • 类型/联合、枚举、范围、长度、列项目、必需键与额外键 Schema。
  • 路径查询、不可变设定、深复制、稳定比较和递归合并。
  • 稳定差异以及校验旧值的应用补丁,冲突返回YJ_PATCH_CONFLICT
  • 字符、容器深度和全树容器项三维解析限制,并覆盖流式帧。
  • JSON 和配置型 TOML 显式互转,不静默丢失无法表示的类型。
  • 版本化 HTTP 媒体类型,不把application/json误认成言据。
  • 跨数据库规范 TEXT/CLOB 边界;原生 JSON 仍是另一种表示。
  • 稳定YJ_*错误详情,程序不必解析中文消息。

处理不可信输入

默认上限是 1,048,576 个 Unicode 字符、64 层容器和全树 100,000 个容器项。服务端应 按协议收紧:

 言据.解析受限(正文,{
    「最大字符」65536
    「最大深度」24
    「最大容器项」4096
});

未知限制键或非正整数返回YJ_LIMIT_CONFIG;超限分别返回YJ_SIZEYJ_DEPTHYJ_ITEMS

HTTP 与数据库

推荐媒体类型为application/vnd.yanxu.yanju; version=1。发送前使用序列化,接收时 先检查是言据媒体类型,再进行受限解析。

所有数据库都可以用数据库文本写入确定的 TEXT/CLOB,并用自数据库文本恢复。 自规范数据库文本用于审计存量内容是否已经规范。PostgreSQL JSONB、MySQL JSON 和 SQLite JSON1 是结构化存储策略,不等同于.yj文本。

权限与限制

内存、HTTP 媒体类型和数据库文本转换不申请权限;文件接口需要最终应用授权实际路径。 格式 v1 不接受指数、NaN 或无穷值;流协议是一行一帧;TOML 只覆盖无损配置子集;项目 媒体类型尚未向 IANA 注册。

源码、规范、API 与 Release:yanxulang/yanjuv1.2.0