2009-12-11 99 views
4

我有一個類庫,我需要通過ASP.NET MVC框架中的JsonResult輸出。 (JsonResult使用JsonSerializer產生它的輸出。)在JsonSerializer中重命名字段

我通過閱讀文檔發現,如果你把[ScriptIgnore]上的公用屬性/領域,它不會得到系列化,很像[XmlIgnore]爲XML序列化。

我需要[XmlElement("elementname")]的等價功能,它絕對指定輸出序列化中字段/屬性的名稱。我有一個名爲Elements的字段,需要序列化到名爲elements的字段。

我該如何使用默認的JsonSerializer來實現這個功能?

謝謝, 大衛

+0

我很困惑,爲什麼會得到低估。它與任何想要使用強類型類庫的人都可以脫離JavaScript而分離。 – 2009-12-11 15:53:58

+0

+1同意......好問題! – 2009-12-11 15:55:03

+0

從此序列化程序的MSDN文檔中,它不會出現任何更多的屬性適用於它。如果它真的不支持它,這是非常令人失望的。在這個例子中,我的用例是與OpenFlashChart2對象模型兼容的JSON.net實現,我只想用[ScriptIgnore]註釋這些字段以及此問題產生的任何屬性,然後作爲工作返回給OpenFlashChart2團隊ASP.NET MVC兼容庫。現在看起來好像我將不得不將這些類封裝在一個命名不清的公共字段的ASP.NET MVC包裝器中。 – 2009-12-11 16:00:22

回答

2

是否使用了DataContractJsonSerializer類?

如果是這樣......

這個屬性添加到您Elements

[DataMember(Name = "elements")] 

SO question表明如何覆蓋利用JsonScriptSerializer來JsonDataContractSerializer。

善良,

+0

不,我正在使用JsonSerializer。正如我所提到的,它是必需的,因爲它是JsonResult在MVC框架中使用的。 – 2009-12-11 15:35:45

+2

增加了SO問題的鏈接,解釋了使用differenet(更多可配置)Json串行器的路由。 – 2009-12-11 15:44:47

+0

仍然不是我正在尋找的東西,但是現在回答這個問題並且非常有幫助。如果沒人能回答這個問題,我可能會被迫走上這條路。謝謝! – 2009-12-11 15:52:31

1

不幸的答案是,你不能做到這一點。話雖如此,我目前正在開發一個模塊,它將通過在運行時生成一個匿名對象來擴展任何對象,該對象將遵循屬性的規則,如JsonIgnore或JsonProperty。當我有東西時我會發布更多信息。