refactor: JsonAnnotations.cj 移至根目录改名 Annotations.cj
- 注解类 SerializerPropertyName/SerializerIgnore 从 simapi_serialization.json 子包移至根包 simapi_serialization(文件 src/Annotations.cj) - 打破循环依赖:根锚点不再 public import json 子包,序列化器由用户显式 import simapi_serialization.json.* - ReflectionCache / 测试文件补 import simapi_serialization.* - serialization_test 同步补 import simapi_serialization.json.* - 16 用例全绿
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* Copyright (c) 2025 SimcuTeam. All rights reserved.
|
||||
* 对齐 .NET System.Text.Json.Serialization 特性:
|
||||
* - [SerializerPropertyName("xxx")] → @SerializerPropertyName["xxx"] 指定字段的 JSON 名称
|
||||
* - [SerializerIgnore] → @SerializerIgnore 序列化/反序列化时忽略该字段
|
||||
* 序列化注解(对齐 .NET System.Text.Json.Serialization 特性):
|
||||
* - [JsonPropertyName("xxx")] → @SerializerPropertyName["xxx"] 指定字段的序列化名称
|
||||
* - [JsonIgnore] → @SerializerIgnore 序列化/反序列化时忽略该字段
|
||||
*
|
||||
* 设计决策:本库序列化/反序列化只处理「var 成员变量」(std.reflect 的 instanceVariables),
|
||||
* 不处理 prop 属性(instanceProperties)。因此注解 target 仅限 MemberVariable:
|
||||
@@ -12,10 +12,10 @@
|
||||
* https://docs.cangjie-lang.cn/en/docs/1.0.0/libs/std/reflect/reflect_samples/annotation.html
|
||||
*/
|
||||
|
||||
package simapi_serialization.json
|
||||
package simapi_serialization
|
||||
|
||||
/**
|
||||
* 指定字段的 JSON 名称(对齐 .NET SerializerPropertyNameAttribute)。
|
||||
* 指定字段的序列化名称(对齐 .NET JsonPropertyNameAttribute)。
|
||||
* 用法:@SerializerPropertyName["user_name"] public var _username: String = ""
|
||||
*/
|
||||
@Annotation[target: [MemberVariable]]
|
||||
@@ -28,7 +28,7 @@ public class SerializerPropertyName {
|
||||
}
|
||||
|
||||
/**
|
||||
* 标记字段不做 JSON 处理(对齐 .NET SerializerIgnoreAttribute)。
|
||||
* 标记字段不做序列化处理(对齐 .NET JsonIgnoreAttribute)。
|
||||
* 用法:@SerializerIgnore public var _temp: String = ""
|
||||
*/
|
||||
@Annotation[target: [MemberVariable]]
|
||||
@@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2025 SimcuTeam. All rights reserved.
|
||||
*
|
||||
* simapi_serialization 根包锚点(cjpm 要求 src 根目录至少有一个 .cj 文件,否则不扫描子目录)。
|
||||
* 全部实现位于子包 simapi_serialization.json(对应 .NET System.Text.Json)。
|
||||
* 通过 public import 重导出:`import simapi_serialization.*` 仍可直接使用
|
||||
* JsonSerializer / JsonOption / @SerializerPropertyName / @SerializerIgnore 等。
|
||||
* simapi_serialization 根包锚点:注解类(@SerializerPropertyName / @SerializerIgnore)同包于此。
|
||||
* 序列化器位于子包 simapi_serialization.json(对应 .NET System.Text.Json)。
|
||||
*
|
||||
* 用法:
|
||||
* import simapi_serialization.* // 注解
|
||||
* import simapi_serialization.json.* // JsonSerializer / JsonOption
|
||||
*/
|
||||
|
||||
package simapi_serialization
|
||||
|
||||
public import simapi_serialization.json.*
|
||||
|
||||
@@ -13,6 +13,7 @@ package simapi_serialization.json
|
||||
import std.collection.*
|
||||
import std.unittest.*
|
||||
import std.unittest.testmacro.*
|
||||
import simapi_serialization.*
|
||||
import simapi_serialization.macros.*
|
||||
|
||||
enum Role {
|
||||
|
||||
@@ -11,6 +11,7 @@ package simapi_serialization.json
|
||||
|
||||
import std.collection.*
|
||||
import std.reflect.*
|
||||
import simapi_serialization.*
|
||||
|
||||
/**
|
||||
* 单个字段的序列化元数据。
|
||||
|
||||
Reference in New Issue
Block a user