std.json
tier: alloc
JSON parsing per RFC 8259: parse flattens a document into [path, tag, value] entries queried via qtag/qval; esc/junesc handle JSON string escaping. The write half (former std.json_write, merged 2026-09-23) replays entries back to JSON text via write_json.
pub struct
struct JIx
索引:按路径升序的条目行(原 [路径, 标签, 值] 三元;首现语义见区块头注)
| Field | Type |
|---|---|
ix |
List[List[Str]] |
pub fn
| Signature | Returns | Description |
|---|---|---|
esc(s: Str) |
Str |
Str → JSON 字符串字面量(含引号;控制字符转义;UTF-8 透传) |
junesc(s: Str) |
Str |
JSON 字符串转义还原(\u 仅解码表内字符;其余原样保留,v0 口径) |
parse(s: Str) |
Result[List[List[Str]], Str] |
解析 JSON 文本 → 展平条目表([路径, 标签, 值] 的列表); 解析失败 → Err(消息)。查询用 qtag/qval。 |
qtag(entries: List[List[Str]], path: Str) |
Str |
查询:路径对应的标签(空串 = 不存在) |
qval(entries: List[List[Str]], path: Str) |
Str |
查询:路径对应的值(标量原文;容器为空串;不存在为空串) |
jerr_kind(e: Str) |
Str |
错误载荷 kind 段(首个 '@' 前;无 '@' 时原样返回) |
jget_i64(entries: List[List[Str]], path: Str) |
Result[I64, Str] |
类型化读取:I64(标签须 n 且整数语法形态) |
jget_f64(entries: List[List[Str]], path: Str) |
Result[F64, Str] |
类型化读取:F64(标签须 n;量级窗/精度口径见区块头注) |
jget_bool(entries: List[List[Str]], path: Str) |
Result[Bool, Str] |
类型化读取:Bool(标签须 b;Bool 载荷发射面绿,Result 面可用) |
jv_i64(entries: List[List[Str]], path: Str, dft: I64) |
I64 |
带默认读取:I64(错误面吞没取 dft;kind 查询用 jk_i64) |
jv_f64(entries: List[List[Str]], path: Str, dft: F64) |
F64 |
带默认读取:F64 |
jv_bool(entries: List[List[Str]], path: Str, dft: Bool) |
Bool |
带默认读取:Bool |
jk_i64(entries: List[List[Str]], path: Str) |
Str |
kind 查询:"ok" 或 noent/null/type/frac/range/syn(载荷原文经 jget_* Err) |
jk_f64(entries: List[List[Str]], path: Str) |
Str |
kind 查询(jget_f64 同径不取值):"ok" 或 noent/null/type/frac/range/syn |
jk_bool(entries: List[List[Str]], path: Str) |
Str |
kind 查询(jget_bool 同径不取值):"ok" 或 noent/null/type/syn |
jix_new(es: List[List[Str]]) |
JIx |
建索引:条目表 → JIx(O(n log n);行引用原条目三元,不复制载荷) |
jix_tag(x: JIx, path: Str) |
Str |
索引查询:路径对应的标签(空串 = 不存在;与 qtag 同口径) |
jix_val(x: JIx, path: Str) |
Str |
索引查询:路径对应的值(标量原文;容器/缺路径空串;与 qval 同口径) |
jix_i64(x: JIx, path: Str) |
Result[I64, Str] |
索引类型化读取:I64(kind 三分/frac/range 同 jget_i64) |
jix_f64(x: JIx, path: Str) |
Result[F64, Str] |
索引类型化读取:F64(量级窗/精度口径同 jget_f64) |
jix_bool(x: JIx, path: Str) |
Result[Bool, Str] |
索引类型化读取:Bool(同 jget_bool) |
wesc(s: Str) |
Str |
============ 写出半边(2026-09-23 自 json_write.ct 并入;助手先于调用者) ============ 路径展平 DOM(wesc 转义逆操作 + jw_keys)按条目 DFS 重放为 JSON 文本 since: std-0.3(并入面)stability: experimental 口径:输入为 json.ct parse 产物(父先子后 DFS 条目,路径以 "." 分段, 根为 "$");键与字符串值写出时经 wesc 重转义;数字/布尔/null 按原文 |
jw_depth(path: Str) |
I32 |
路径深度 = '.' 计数(根 "$" 为 0) |
jw_keys(entries: List[List[Str]], path: Str) |
List[Str] |
枚举 path 的直接成员名(对象=键序列,数组=下标序列"0","1",…) |
write_json(entries: List[List[Str]]) |
Option[Str] |
写出:entries(json.ct parse 产物)→ 紧凑 JSON 文本;空表 → None |
jw_ent(path: Str, tag: Str, val: Str) |
List[Str] |
条目构造助手(测试与调用方共用) |
num_json(v: I64) |
Str |
---- 标量规范形(S3 轨迹值编码;§5.1 字节级钉死;RFC 8259 标量)---- JSON number:整数 = 十进制原文(F64 形态未纳:浮点文本格式语言侧未钉,登记) |
bool_json(v: Bool) |
Str |
JSON bool |
str_json(v: Str) |
Str |
JSON string:esc 已含引号(显式别名,语义锚定 S3 轨迹契约) |