JavaScriptSerializer - 自定义属性名称

Ele*_*eer 6 c# json javascriptserializer

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

[JsonProperty("base")]
public int baseValue { get; set; }
Run Code Online (Sandbox Code Playgroud)

没有帮助我,值baseValue每次设置为0(如果你认为,这个注释应该工作,我可以发布我的整个代码,不仅这2行)

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

dbc*_*dbc 17

回答几个部分:

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

    public int @base { get; set; }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 你写道你正在使用JavaScriptSerializer.该属性[JsonProperty]用于完全不同的序列化程序Json.NET.此属性对此没有影响JavaScriptSerializer.

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

  3. 实际上,DataContractJsonSerializer除了编写自定义之外,无法重命名属性以进行序列化JavaScriptSerializer.这个序列化器非常简单; 它支持的唯一序列化属性是JavaScriptConverter禁止属性的序列化.