Files
core/lib/doc/dever-json.md
T
2026-11-03 03:32:07 +00:00

138 lines
3.0 KiB
Markdown

# JSON
Json 保留已验证的 JSON 内容和数字原文,支持直接解码为具体类型;Document 用于显式遍历节点。
## dever.json.JsonResult
解析成功返回不透明 Json,失败保留错误文本。
分支:
- `Parsed(value: Json)`:解析成功
- `error Failed(message: Text)`:解析失败
## dever.json.TextResult
读取 JSON 字符串或返回类型错误。
分支:
- `Read(value: Text)`:字符串值
- `error Failed(message: Text)`:类型错误
## dever.json.IntResult
读取精确 Int 数字或返回类型错误。
分支:
- `Read(value: Int)`:整数值
- `error Failed(message: Text)`:类型错误
## dever.json.fromText
从文本解析 JSON,应用 16 MiB、64 层和 65536 值限制。
## dever.json.toText
返回已经验证的 JSON 原文。
## dever.json.setProperty
按对象字段名替换或追加一个 JSON 子值。
## dever.json.propertyValue
读取对象字段;缺失字段返回 null,非对象输入传播 PropertyResult.Failed。
## dever.json.asText
读取 JSON 字符串值。
## dever.json.asInteger
读取不带小数和指数的 i64 JSON 数字。
## dever.json.encode
把标量、公开 record、List 或可空值编码为 Json,无需手工构造 JSON 节点。
## dever.json.decode
把 Json 解码为接收位置指定的类型,例如 `input: CreateInput = dever.json.decode(value)`。字段或类型不符时失败。
不复制 JSON 文本、不建立 Document,不自动清洗 Text。普通 API 参数已有具体类型时无需再调用;未知结构才使用动态 Json/Document。
## dever.json.parsed
取出解析后的 Json;解析失败时继续传播错误。
## dever.json.parse
把 JSON 文本解析为扁平 dever.json.value.Document。
## dever.json.stringify
验证并编码手工构造的 dever.json.value.Document。
## dever.json.node
读取节点;缺失节点返回 null。
## dever.json.property
读取对象字段的节点 ID。
## dever.json.element
读取数组元素的节点 ID。
## dever.json.parsedDocument
取出文档;解析失败时保留位置和原因并传播错误。
## dever.json.written
取出编码文本;编码失败时继续传播错误。
## dever.json.textValue
取出 JSON 字符串;类型不匹配时传播错误。
## dever.json.intValue
取出 JSON 整数;类型不匹配时传播错误。
## dever.json.PropertyResult
区分缺失字段和非对象输入;JSON null 是存在的 Json 值。
分支:
- `Found(value: Json?)`:字段值或缺失
- `error Failed(message: Text)`:非对象输入
## dever.json.propertyResult
取出字段值;缺失字段返回 null,读取失败时传播错误。
## dever.json.object
按 Map 插入顺序构造对象,写入时限制大小。
## dever.json.array
按列表顺序构造 JSON 数组。
## dever.json.string
转义并编码字符串。
## dever.json.integer
编码精确 i64 整数。
## dever.json.boolean
编码布尔值。
## dever.json.nullValue
构造存在的 JSON null。