在JsonSerializer中重命名字段

时间:2009-12-11 14:43:11

标签: .net asp.net-mvc json jsonserializer

我有一个类库,我需要通过ASP.NET MVC框架中的JsonResult输出。 (JsonResult使用JsonSerializer生成其输出。)

我通过阅读文档发现,如果将[ScriptIgnore]放在公共属性/字段上,它将不会被序列化,就像XML序列化程序的[XmlIgnore]一样。

我需要[XmlElement("elementname")]的等效功能,它绝对指定输出序列化中字段/属性的名称。我有一个名为Elements的字段需要序列化到名为elements的字段。

如何使用默认的JsonSerializer完成此操作?

谢谢, 大卫

3 个答案:

答案 0 :(得分:2)

您使用的是DataContractJsonSerializer课吗?

如果是这样......

将此属性添加到Elements字段

[DataMember(Name = "elements")] 

这个SO question建议如何覆盖JsonScriptSerializer到JsonDataContractSerializer的使用。

善,

答案 1 :(得分:1)

不幸的答案是,你不能这样做。话虽如此,我目前正在开发一个模块,它将通过在运行时生成一个匿名对象来扩展任何对象,该对象将遵循属性的规则,例如JsonIgnore或JsonProperty。当我有东西时,我会发布更多信息。

答案 2 :(得分:-1)

正确的属性是JsonPropertyName