This is Xamarin's bug tracking system. For product support, please use the support links listed in your Xamarin Account.
Bug 3811 - DataContractJsonSerializer deserialization fails with subclass of List<int> as known type
Summary: DataContractJsonSerializer deserialization fails with subclass of List<int> a...
Status: RESOLVED FIXED
Alias: None
Product: Class Libraries
Classification: Mono
Component: System (show other bugs)
Version: 2.10.x
Hardware: PC Windows
: --- normal
Target Milestone: ---
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2012-03-08 11:20 UTC by Rick Mohr
Modified: 2015-05-15 18:28 UTC (History)
2 users (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments

Description Rick Mohr 2012-03-08 11:20:04 UTC
The following code runs correctly on .NET 4.0, but fails with Mono:

using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;

namespace MonoDeserializationFailure
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var knownTypes = new List<Type> { typeof(IntList) };
                var serializer = new DataContractJsonSerializer(typeof(ListOfNumbers), knownTypes);

                string json = "{\"Numbers\": [85]}";
                using (var stream = new MemoryStream(UTF8Encoding.Default.GetBytes(json)))
                {
                    var nums = (ListOfNumbers)serializer.ReadObject(stream);
                    Console.WriteLine("Success: " + nums.Numbers.Count);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failure: " + ex.Message);
            }
        }
    }

    [DataContract]
    public class ListOfNumbers
    {
        [DataMember]
        public IntList Numbers;
    }

    public class IntList : List<int>
    {
    }
}
Comment 1 Miguel de Icaza 2015-05-15 18:24:41 UTC
This is fixed;   Test added as well to Mono/master
Comment 2 Miguel de Icaza 2015-05-15 18:28:17 UTC
Tests are here: mono/f1778d1797ad80109890c2cbcb76b1e2b8e08b05

Note You need to log in before you can comment on or make changes to this bug.