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 'ï'.

0 ответов

Другие вопросы по тегам