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:
@@ -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")
|
||||
}
|
||||
|
||||
/// 枚举序列化/反序列化
|
||||
|
||||
Reference in New Issue
Block a user