RyanJson API 语境(压缩版)
1. 作用
- 提供 API 解答的最小安全语境,防止跨宏/跨模式误答。
- 执行与模式共性口径见
../shared/ryanJsonCommon.md。
- 术语口径见
../shared/terminology.md。
2. 回答前必须检查
- 当前源码中的:
RyanJsonStrictObjectKeyCheck
RyanJsonDefaultAddAtHead
- 当前仓库默认值(仅参考):
RyanJsonStrictObjectKeyCheck=false
RyanJsonDefaultAddAtHead=true
3. hooks 基线
RyanJsonInitHooks 必须在任意 RyanJson API 之前执行。
- hooks 初始化失败时必须立即中止 Json 路径。
4. API 安全基线
- 读取路径:先判空,再判型,再取值。
- 更新路径:同类型用
Change*Value,跨类型用 ReplaceBy*。
- 结构路径:
Detach 后必须重新挂载或显式释放。
5. 错误级别口径
- 可恢复错误:输入非法、key 不存在、类型不符等,返回 false/NULL。
- 不可恢复错误:内存破坏、双重释放、结构不变量损坏;在启用
RyanJsonEnableAssert 时可触发 assert。
6. 输出检查单
- 标明宏前提。
- 区分已验证/推断。
- 给出失败分支与释放动作。
7. 依据(仓库内)
RyanJson/RyanJsonConfig.h:RyanJsonStrictObjectKeyCheck、RyanJsonDefaultAddAtHead 默认值
RyanJson/RyanJson.c:hooks 全局指针与 RyanJsonInitHooks
test/unityTest/cases/core/testCreate.c、test/unityTest/cases/core/testReplace.c:失败所有权语义