Я пытаюсь сериализовать объект в 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); }
}
}
код у меня есть для serialising в 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)
и Serializer просто: -
public static string ToJson<T>(this T value)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(value, Formatting.Indented);
}
Поэтому значение в данном случае является Basket объект, который хранится в BasketManager. SessionBasket
и я могу назвать что-то вроде
((Basket)BasketManager.SessionBasket).GrandTotalIncVAT
и он содержит значение.
Однако, когда я сериализую это, в списке есть только члены BasketItem и нет корзины, поэтому GrandTotalIncVAT не появляется.
Чтобы ответить на ваш вопрос, BusinessListBase является сторонним объектом CSLA.NET. Я не применял этот подход, поэтому мне интересно, не вызывает ли это какой-то странности.
Не могли бы вы поделиться больше информации: Что такое T в '' objSerializer.ConvertToType? Какой тип значения? Что такое BusinessListBase? –
Kenneth
Пожалуйста, напишите весь ваш код, whats T? Как вызван ваш сериализатор? Вы только предоставили нам половину информации, которая нам нужна здесь? – Liam
Циркулярные ссылки, возможно. Они не будут обработаны красиво, будь то много/любой сериализатор (ы), либо опустив их молча, либо выбросив ошибку. –