Так вот он идет,C# ошибка двоичная сериализация
У меня есть следующие JSON строку:
{"sTest":"Hello","oTest":{"vTest":{},iTest:0.0}}
И я десериализации его, используя Newtonsoft.JSON как:
Dictionary<string, dynamic> obj = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(json)
Проблема в том, что у меня есть требование, которое требует, чтобы я сериализовал этот объект в двоичный файл, используя BinaryFormatter. И, выполнив следующие действия:
Stream stream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/_etc/") + "obj.dat", FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
BinaryFormatter serializer = new BinaryFormatter();
serializer.Serialize(stream, e.props);
stream.Close();
Я получил сообщение об ошибке сказав:
Тип 'Newtonsoft.Json.Linq.JObject' в Newtonsoft.Json Ассамблеи», Version = 6.0.0.0, Culture = нейтральный, PublicKeyToken = xxxxxxxxxxxxxxx 'не помечен как сериализуемый.
Я понятия не имею, как продолжить. Есть что-то, что мне не хватает? Есть идеи? Благодаря!
Это означает, что я не могу сериализовать динамический объект в двоичный файл? есть ли другая работа вокруг, которая позволяет мне это делать? В любом случае, большое спасибо, приятель! –
@GalihDonoPrabowo: На самом деле нет такой вещи, как «динамический объект» - вы пытаетесь сериализовать «JObject». «BinaryFormatter» не знает, что ваша переменная использует «dynamic». Лично я бы рекомендовал попытаться избавиться от требования - бинарный форматтер .NET довольно хрупкий и раздражающий разными способами ... если ваше реальное требование - компактное представление, есть много других опций. (И «двоичный файл» не подразумевает «использование .NET бинарного serializatoin» обязательно ...) –
Вероятно, маркировка класса с помощью ['[Serializable]'] (https://msdn.microsoft.com/en-us/ library/system.serializableattribute% 28v = vs.110% 29.aspx) будет проще, чем реализация ['ISerializable'] (https://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable % 28v = vs.110% 29.aspx). – dbc