xrain
|
4e4e6e866c
|
包名迁移: simapi_serialization → simcu::serialization(org=simcu)
|
2026-08-18 04:26:31 +08:00 |
|
xrain
|
c6269df957
|
feat: 新增 TypeInfo 版反序列化入口——按运行时类型反序列化
- JsonSerializer.Deserialize(typeInfo, jsonString[, options]): Any
- JsonReader.read(typeInfo, value, options): Any
- 供框架运行时模型绑定等场景使用(无需编译期泛型)
|
2026-08-18 00:27:22 +08:00 |
|
xrain
|
94f306e57a
|
chore: 发布准备——修复 cjlint MANDATORY 错误 + 补 org 配置
publish 流程会执行 cjlint(error 即阻塞),修复:
- 测试枚举 Role.User 与类型名 User 冲突 → 改名 Role.Member(G.ENU.01)
- 测试用例函数补 : Unit 返回类型(G.DCL.02)
- JsonOption.instance 补显式类型(G.DCL.02)
- JsonReader.readParentFields 移除未使用 options 参数(G.FUN.02)
- Annotations.cj 移除硬编码 URL(G.OTH.03)
- 宏 FieldVisitor.visit 补 : Unit(G.DCL.02)
- cjpm.toml 增加 org = "simcu"(publish 自动写入)
cjpm bundle 已可成功生成 simapi_serialization-1.0.0.cjp,
剩余阻塞:中心仓认证(pkg.cangjie-lang.cn 需用户 token)
|
2026-08-17 14:19:44 +08:00 |
|
xrain
|
990f10f98c
|
refactor: 注解与宏改名——Serializer 前缀统一命名
- @JsonPropertyName → @SerializerPropertyName
- @JsonIgnore → @SerializerIgnore
- @JsonParent → @SerializerParent(宏文件 JsonParentMacro.cj → SerializerParentMacro.cj)
- 同步更新:JsonAnnotations、ReflectionCache、宏内部注解判断、
测试、方案文档、serialization_test 独立项目
- 16 用例全绿
|
2026-08-17 13:58:05 +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 |
|