refactor: 新增 common 子包——XML/JSON 共用部分 + 单 import 全量可用

- src/common/(package simapi_serialization.common):
  Annotations.cj(@SerializerPropertyName/@SerializerIgnore)、
  ReflectionCache.cj(字段元数据 + 继承链缓存)、NamingPolicy.cj(PropertyNamingPolicy)
- 根锚点 public import common.* + json.*:import simapi_serialization.* 即可用全部
- JsonOption.propertyNamingPolicy 引用 common 枚举;getFields 改收命名策略
- 枚举值 PropertyNamingPolicy.None → Keep(None 与内置 Option.None 构造器同名冲突)
- JsonWriter/JsonReader 单类 import common,避免循环依赖
- 测试/独立项目验证:16 用例全绿;serialization_test 单 import 即可运行
This commit is contained in:
2026-08-17 14:06:13 +08:00
parent e24b73ee96
commit f593f96d9a
8 changed files with 58 additions and 31 deletions
+6 -4
View File
@@ -13,9 +13,11 @@ package simapi_serialization.json
import std.collection.*
import std.unittest.*
import std.unittest.testmacro.*
import simapi_serialization.*
import simapi_serialization.common.SerializerPropertyName
import simapi_serialization.common.SerializerIgnore
import simapi_serialization.common.PropertyNamingPolicy
import simapi_serialization.common.ReflectionCache
import simapi_serialization.macros.*
enum Role {
| Admin
| User
@@ -237,7 +239,7 @@ public class JsonSerializerTests {
@TestCase
public func namingPolicies() {
let optNone = JsonOption()
optNone.propertyNamingPolicy = PropertyNamingPolicy.None
optNone.propertyNamingPolicy = PropertyNamingPolicy.Keep
let jsonNone = JsonSerializer.Serialize(makeUser(), optNone)
let optCamel = JsonOption()
@@ -265,7 +267,7 @@ public class JsonSerializerTests {
@Expect(ReflectionCache.applyNamingPolicy("Name", PropertyNamingPolicy.CamelCase), "name")
@Expect(ReflectionCache.applyNamingPolicy("_name", PropertyNamingPolicy.CamelCase), "_name")
// None:原样
@Expect(ReflectionCache.applyNamingPolicy("Name", PropertyNamingPolicy.None), "Name")
@Expect(ReflectionCache.applyNamingPolicy("Name", PropertyNamingPolicy.Keep), "Name")
}
/// 枚举序列化/反序列化