Files
serialization-cj/src/json/JsonAnnotations.cj
T
xrain 172681f92c refactor: 取消 annotations 子目录,特性文件改名 JsonAnnotations 并入 json 包
- src/json/annotations/JsonAttributes.cj → src/json/JsonAnnotations.cj
- 包 simapi_serialization.json.annotations → simapi_serialization.json
- @JsonPropertyName / @JsonIgnore 现在与 JsonSerializer 同包,import simapi_serialization.json.* 即可
2026-08-17 11:04:25 +08:00

38 lines
1.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* Copyright (c) 2025 SimcuTeam. All rights reserved.
* 对齐 .NET System.Text.Json.Serialization 特性:
* - [JsonPropertyName("xxx")] → @JsonPropertyName["xxx"] 指定字段的 JSON 名称
* - [JsonIgnore] → @JsonIgnore 序列化/反序列化时忽略该字段
*
* 设计决策:本库序列化/反序列化只处理「var 成员变量」(std.reflect 的 instanceVariables),
* 不处理 prop 属性(instanceProperties)。因此注解 target 仅限 MemberVariable
* 标到 prop 上会直接编译报错,避免「标了但不生效」的静默陷阱。
*
* 参考仓颉官方注解用法(std.reflect 运行时读取):
* https://docs.cangjie-lang.cn/en/docs/1.0.0/libs/std/reflect/reflect_samples/annotation.html
*/
package simapi_serialization.json
/**
* 指定字段的 JSON 名称(对齐 .NET JsonPropertyNameAttribute)。
* 用法:@JsonPropertyName["user_name"] public var _username: String = ""
*/
@Annotation[target: [MemberVariable]]
public class JsonPropertyName {
public let name: String
public const init(name: String) {
this.name = name
}
}
/**
* 标记字段不做 JSON 处理(对齐 .NET JsonIgnoreAttribute)。
* 用法:@JsonIgnore public var _temp: String = ""
*/
@Annotation[target: [MemberVariable]]
public class JsonIgnore {
public const init() {}
}