/* * 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() {} }