138 lines
3.0 KiB
Markdown
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。
|