From 0bc7e213f93d0622e3a2e53e0aaa76814114da54 Mon Sep 17 00:00:00 2001 From: xRain Date: Mon, 17 Aug 2026 11:03:01 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=85=A8=E9=83=A8=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E7=A7=BB=E5=85=A5=20json=20=E5=AD=90=E5=8C=85?= =?UTF-8?q?=EF=BC=8Cattributes=20=E6=94=B9=E5=90=8D=20annotations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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.* --- src/SimApiSerialization.cj | 13 +++++++++++++ src/{ => json}/JsonOption.cj | 2 +- src/{ => json}/JsonReader.cj | 2 +- src/{ => json}/JsonSerializer.cj | 2 +- src/{ => json}/JsonWriter.cj | 2 +- src/{ => json}/ReflectionCache.cj | 4 ++-- .../annotations}/JsonAttributes.cj | 2 +- 7 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 src/SimApiSerialization.cj rename src/{ => json}/JsonOption.cj (97%) rename src/{ => json}/JsonReader.cj (99%) rename src/{ => json}/JsonSerializer.cj (98%) rename src/{ => json}/JsonWriter.cj (99%) rename src/{ => json}/ReflectionCache.cj (97%) rename src/{attributes => json/annotations}/JsonAttributes.cj (96%) diff --git a/src/SimApiSerialization.cj b/src/SimApiSerialization.cj new file mode 100644 index 0000000..c27e067 --- /dev/null +++ b/src/SimApiSerialization.cj @@ -0,0 +1,13 @@ +/* + * 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 / @JsonPropertyName / @JsonIgnore 等。 + */ + +package simapi_serialization + +public import simapi_serialization.json.* +public import simapi_serialization.json.annotations.* diff --git a/src/JsonOption.cj b/src/json/JsonOption.cj similarity index 97% rename from src/JsonOption.cj rename to src/json/JsonOption.cj index a456cc5..a12fa19 100644 --- a/src/JsonOption.cj +++ b/src/json/JsonOption.cj @@ -3,7 +3,7 @@ * JsonOption:序列化选项(对齐 .NET JsonSerializerOptions)。 */ -package simapi_serialization +package simapi_serialization.json /** * 属性命名策略(对齐 .NET JsonNamingPolicy)。 diff --git a/src/JsonReader.cj b/src/json/JsonReader.cj similarity index 99% rename from src/JsonReader.cj rename to src/json/JsonReader.cj index 041b1ad..281ca01 100644 --- a/src/JsonReader.cj +++ b/src/json/JsonReader.cj @@ -7,7 +7,7 @@ * - 类型不匹配做宽松转换(JsonInt/JsonFloat/JsonString 互转) */ -package simapi_serialization +package simapi_serialization.json import std.collection.* import std.convert.* diff --git a/src/JsonSerializer.cj b/src/json/JsonSerializer.cj similarity index 98% rename from src/JsonSerializer.cj rename to src/json/JsonSerializer.cj index 9c6c5ac..aff2d9f 100644 --- a/src/JsonSerializer.cj +++ b/src/json/JsonSerializer.cj @@ -7,7 +7,7 @@ * 全反射实现:任意类(无参构造 + var 字段)无需实现接口、无需宏。 */ -package simapi_serialization +package simapi_serialization.json import stdx.encoding.json.* diff --git a/src/JsonWriter.cj b/src/json/JsonWriter.cj similarity index 99% rename from src/JsonWriter.cj rename to src/json/JsonWriter.cj index 5acbdea..30549ae 100644 --- a/src/JsonWriter.cj +++ b/src/json/JsonWriter.cj @@ -6,7 +6,7 @@ * 因此通过反射调用 iterator()/hasNext()/next() 与 keys()/get() 迭代元素。 */ -package simapi_serialization +package simapi_serialization.json import std.collection.* import std.reflect.* diff --git a/src/ReflectionCache.cj b/src/json/ReflectionCache.cj similarity index 97% rename from src/ReflectionCache.cj rename to src/json/ReflectionCache.cj index 9c60e1a..7bd68c9 100644 --- a/src/ReflectionCache.cj +++ b/src/json/ReflectionCache.cj @@ -7,11 +7,11 @@ * 故 v1 仅枚举运行时类自身声明的 var 字段(父类字段暂不序列化)。 */ -package simapi_serialization +package simapi_serialization.json import std.collection.* import std.reflect.* -import simapi_serialization.attributes.* +import simapi_serialization.json.annotations.* /** * 单个字段的序列化元数据。 diff --git a/src/attributes/JsonAttributes.cj b/src/json/annotations/JsonAttributes.cj similarity index 96% rename from src/attributes/JsonAttributes.cj rename to src/json/annotations/JsonAttributes.cj index d45380c..ab295b9 100644 --- a/src/attributes/JsonAttributes.cj +++ b/src/json/annotations/JsonAttributes.cj @@ -12,7 +12,7 @@ * https://docs.cangjie-lang.cn/en/docs/1.0.0/libs/std/reflect/reflect_samples/annotation.html */ -package simapi_serialization.attributes +package simapi_serialization.json.annotations /** * 指定字段的 JSON 名称(对齐 .NET JsonPropertyNameAttribute)。