Skip to content

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 轨迹契约)