我想將一個對象序列化爲JSON,但無法弄清楚爲什麼會忽略一大堆屬性。作爲參考,我曾嘗試使用DataContractJsonSerializer
同樣無濟於事,因爲它會生成StackOverflowException
。將對象序列化爲JSON
從本質上講,我有一個Basket
對象: -
public class Basket : BusinessListBase<Basket, BasketItem>
{
private Voucher _voucher;
public Voucher Voucher;
public decimal GrandTotalIncVat
{
get { return Math.Round(BasketTotalIncVat + DeliveryTotalIncVat, 2); }
}
}
我有連載到JSON的代碼是: -
JavaScriptSerializer objSerialiser = new JavaScriptSerializer();
StringBuilder objSB = new StringBuilder();
objSerialiser.ConvertToType<T>(value);
objSerialiser.Serialize(value, objSB);
return objSB.ToString();
來此JSON代碼調用工作正常,但生成的字符串只包含BasketItem
而不是Basket
的屬性,這真的是我想要的。
這裏有什麼問題?
我現在打電話串行有: -
universalVariableBase.BasketData = BasketManager.SessionBasket;
JsonHelper.ToJson<Core.UniversalVariable>(universalVariableBase)
和串行很簡單: -
public static string ToJson<T>(this T value)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(value, Formatting.Indented);
}
因此,在這種情況下,該值被存儲爲BasketManager籃子對象。 SessionBasket
,我可以調用類似
((Basket)BasketManager.SessionBasket).GrandTotalIncVAT
它包含一個值。
但是,當我序列化這個時,只有BasketItem的成員作爲列表,沒有Basket,所以GrandTotalIncVAT沒有出現。
要回答你的問題,BusinessListBase是來自CSLA.NET的第三方對象。我沒有實現這個方法,所以我想知道這是否在某個地方造成了一些怪異。
你能分享一些更多的信息:什麼是噸'objSerializer.ConvertToType'?什麼類型是價值?什麼是BusinessListBase? –
Kenneth
請發佈您的所有代碼,whats T?你的串行器如何被調用?你只給我們一半我們需要的信息? – Liam
可能的循環引用。對於許多/任何序列化程序,它們不會很好地處理,要麼靜靜地省略它們,要麼拋出錯誤。 –