Commit Graph
5 Commits
Author SHA1 Message Date
xrain de875234e4 fix: 命名策略不剥除前导下划线(_name 原样输出 _name)
- applyNamingPolicy 不再去掉字段名前导 _,策略只影响字母大小写
- @JsonPropertyName 仍可覆盖(_alias → user_alias)
- 测试改为 _ 前缀字段并验证原样输出
2026-08-17 11:12:22 +08:00
xrain 172681f92c refactor: 取消 annotations 子目录,特性文件改名 JsonAnnotations 并入 json 包
- src/json/annotations/JsonAttributes.cj → src/json/JsonAnnotations.cj
- 包 simapi_serialization.json.annotations → simapi_serialization.json
- @JsonPropertyName / @JsonIgnore 现在与 JsonSerializer 同包,import simapi_serialization.json.* 即可
2026-08-17 11:04:25 +08:00
xrain 0bc7e213f9 refactor: 全部实现移入 json 子包,attributes 改名 annotations
- src/Json*.cj → src/json/(包 simapi_serialization.json,对应 .NET System.Text.Json)
- src/attributes → src/json/annotations/(包 simapi_serialization.json.annotations)
- 根包 simapi_serialization 保留为 cjpm 扫描锚点,public import 重导出 json + annotations
- 用法:import simapi_serialization.*(重导出)或 import simapi_serialization.json.* / .json.annotations.*
2026-08-17 11:03:01 +08:00
xrain 9a656e60d8 refactor: @JsonPropertyName/@JsonIgnore target 收窄为仅 MemberVariable
序列化/反序列化只处理 var 成员变量(instanceVariables),不处理 prop 属性;
注解标到 prop 上现在直接编译报错,避免标了不生效的静默陷阱
2026-08-17 11:00:35 +08:00
xrain 8d10c31473 feat: SimApiSerialization 全反射 JSON 序列化库 v1
对齐 .NET System.Text.Json:
- JsonSerializer.Serialize(obj, JsonOption) / Deserialize<T>(jsonString, JsonOption)
- @JsonPropertyName / @JsonIgnore 特性(运行时注解反射)
- JsonOption:PropertyNamingPolicy(None/CamelCase/SnakeCase)、ignoreNull、maxDepth
- 全反射实现:基础类型/枚举/Option/Array/ArrayList/HashSet/HashMap/嵌套对象
- 仓颉特性适配:
  * Option 是泛型枚举 → EnumTypeInfo.destruct/construct 处理
  * 集合 get(i) 返回 Option<T> → Some/None 解包迭代
  * 集合泛型不变 → 反射方法调用(toArray/get/add/keys)而非 cast
  * as 返回 Option → ?? 解包;JsonKind 用 is 判断
- 已知限制:反序列化需无参构造+var 字段;父类字段不序列化(平台严格类型校验);
  枚举按名字;循环引用用深度上限保护
- 已实测:User 完整回环 + 数组/HashMap 回环 + 特性生效
2026-08-17 10:47:51 +08:00