C#反序列化JSON时属性名与内置数据类型重名如何处理
解决方案
方案1:使用C#关键字转义语法(最简便)
C#允许通过在关键字前添加@前缀,将保留字作为合法标识符使用,无需修改任何反序列化逻辑,直接修改实体类定义即可:
public class MyClass { public int A; public int B; public int @short; }
你在代码中访问该属性时同样使用@short即可,编译后该前缀会被自动忽略,不影响实际运行逻辑。
方案2:使用属性映射特性(更符合命名规范)
如果希望使用符合C#命名规范的属性名,可以使用JavaScriptSerializer原生支持的[ScriptProperty]特性指定JSON字段和实体属性的映射关系:
using System.Web.Script.Serialization; public class MyClass { public int A; public int B; [ScriptProperty(Name = "short")] public int Short { get; set; } }
以上两种方案都不需要修改你原有的反序列化代码,原有逻辑可以直接复用。
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

