2011-06-07 40 views
1

我正在使用Newtonsoft JSON.NET庫,但遇到以下問題。基於類定義的C#JSON序列化

動態序列化遍歷所有對象屬性和字段。但是,當使用動態代理進來的ORM時,我明顯遇到了代理內部字段無法序列化的錯誤。

使用OptIn方法在序列化類上使用屬性不是一種選擇。類不僅用於Web應用程序,而且對JSON.NET程序集的依賴也是不可能的。

任何有關最小綁定/接線代碼的方法的建議?

+0

我猜你是序列化某種Web服務,雖然我確定你有很好的手動序列化的原因,但我想指出WCF響應序列化器(JSON)也使用定義的屬性在System.Runtime.Serialization(DataMember,例如:http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datamemberattribute.aspx)。使用這些,你可以定義哪些東西是序列化的,當然如果System.Runtime.Serialization對你的類是一個可接受的依賴。 – rciq 2011-06-07 10:05:41

+0

問題是,我甚至幾乎不能改變這些類(把東西放進去)。它是更大系統其他人維護的一部分,所以我無法控制它。 – evilcroco 2011-06-07 11:13:31

+0

在這種情況下,您可能別無選擇,只能爲服務合約建立一個專門的課程組。正如Henrik所建議的,我總是使用自己開發的映射器進行業務<->合同轉換,但是現在您可以使用Automapper。 T4模板可以幫助您從原件生成您的合同類。 – rciq 2011-06-07 12:56:07

回答

1

你可以在一組單獨的類中定義你的json格式,然後用例如.txt將ORM類轉換爲這些類。 Automapper