На протяжении всего моего проекта у меня есть одноэлементный класс обслуживания, который занимается (де) сериализацией, с чем-то вроде этого:
_setting = new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.Objects,
Converters = new List<JsonConverter>() { new MyConverter() },
TraceWriter = new Iov.Common.Json.TraceWriter(),
Formatting = Formatting.Indented,
SerializationBinder = binder,
DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate,
};
Служба будет использоваться в многопоточной среде, т.е. несколько (de) в сериализационных задачах одновременно используется JsonSerializerSettings
с моими пользовательскими JsonConverter
.
. До настоящего времени преобразователь не имел состояния, но для десериализации я рассматриваю возможность отслеживания состояния,то есть текущая позиция в объекте JSON, дочерние / родительские отношения.Конвертер должен будет хранить / кэшировать свои результаты (в основном в переопределении ReadJson
) в некотором стеке / списке.
Все (де) сериализованные вызовы заключены в методы упомянутой службы, поэтому я мог легко реализовать использование нового экземпляра JsonSerializerSettings
с моим пользовательским JsonConverter
для каждого вызова.
Предполагая, что мое первоначальное предположение верно, что JsonConverter
не зависит от потоков и поэтому поддерживает многопоточность , пока он не имеет состояния , мой вопрос: могу ли я положиться на JsonConverter
всегда десериализовать объекты в одном и том же порядке?
Я знаю, что порядок, в котором заполняются члены, не определен (так как порядок в Dictionary
нет), но всегда будет десериализован "от листа кфилиал "?