一尘不染

JavaScriptSerializer-自定义属性名称

json

我正在使用JavaScriptSerializer反序列化json数据。一切工作都很好,但是我的问题是,json数据中的一个属性被命名为“
base”,所以我无法在C#代码中创建这样的属性。我发现我可以手动将值映射到构造函数中的属性,但是问题是,我的DTO具有200个属性,因此我不想手动进行此操作,而是希望找到任何其他解决方案。我也尝试使用注释,但这是:

[JsonProperty("base")]
public int baseValue { get; set; }

并没有帮助我,每次将baseValue值设置为0(如果您认为此批注应该起作用,那么我可以发布我的整个代码,而不仅仅是这2行)

有什么办法可以简单地解决我的问题?


阅读 525

收藏
2020-07-27

共1个答案

一尘不染

分几部分回答:

  1. 要创建一个名为的属性base,您需要在名称前加上@

    public int @base { get; set; }
    
  2. 您写道您正在使用JavaScriptSerializer。该属性[JsonProperty]用于完全不同的序列化程序Json.NET。此属性对无效JavaScriptSerializer

如果要切换到Json.NET,则可以使用此属性。

或者,如果要改为将数据协定属性应用于类型,则可以使用Json.NET或DataContractJsonSerializer使用重命名的属性来序列化类型。

  1. 实际上,JavaScriptSerializer除了编写custom之外,无法重命名属性以进行序列化JavaScriptConverter。这个序列化器是非常准的。它支持的唯一序列化属性是ScriptIgnore禁止属性的序列化。
2020-07-27