DataContractJsonSerializer не может десериализовать Newtonsoft JsonSerializer
Что означают первые 3 байта, написанные JsonSerializer в начале потока, и почему DataContractJsonSerializer имеет с ними проблемы?
Образец:
Foo foo = new Foo();
using (MemoryStream stream = new MemoryStream())
{
//serialize using JsonSerializer
using (var streamWriter = new StreamWriter(stream, Encoding.UTF8, 4096, true))
using (var jsonWriter = new JsonTextWriter(streamWriter))
{
JsonSerializer jsonSerializer = JsonSerializer.Create();
jsonSerializer.Serialize(jsonWriter, foo, typeof(Foo));
}
// reset position
stream.Seek(0, SeekOrigin.Begin);
// deserialize using DataContractJsonSerializer
using (var jsonReader = JsonReaderWriterFactory.CreateJsonReader(stream, Encoding.UTF8, XmlDictionaryReaderQuotas.Max, null))
{
DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(Foo));
foo = (Foo)dataContractJsonSerializer.ReadObject(jsonReader);
}
}
Десериализация заканчивается исключением: Additional information: There was an error deserializing the object of type Sandbox.Program+Foo. Encountered unexpected character 'ï'.