我正在使用JavaScriptSerializer反序列化json数据。一切工作都很好,但是我的问题是,json数据中的一个属性被命名为“ base”,所以我无法在C#代码中创建这样的属性。我发现我可以手动将值映射到构造函数中的属性,但是问题是,我的DTO具有200个属性,因此我不想手动进行此操作,而是希望找到任何其他解决方案。我也尝试使用注释,但这是:
[JsonProperty("base")] public int baseValue { get; set; }
并没有帮助我,每次将baseValue值设置为0(如果您认为此批注应该起作用,那么我可以发布我的整个代码,而不仅仅是这2行)
有什么办法可以简单地解决我的问题?
分几部分回答:
要创建一个名为的属性base,您需要在名称前加上@:
base
@
public int @base { get; set; }
您写道您正在使用JavaScriptSerializer。该属性[JsonProperty]用于完全不同的序列化程序Json.NET。此属性对无效JavaScriptSerializer。
JavaScriptSerializer
[JsonProperty]
如果要切换到Json.NET,则可以使用此属性。
或者,如果要改为将数据协定属性应用于类型,则可以使用Json.NET或DataContractJsonSerializer使用重命名的属性来序列化类型。
DataContractJsonSerializer
JavaScriptConverter
ScriptIgnore