[Mono-bugs] [Bug 639381] New: Using DataContractJsonSerializer and knownTypes doesn't produce correct JSON

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Tue Sep 14 17:11:20 EDT 2010


https://bugzilla.novell.com/show_bug.cgi?id=639381

https://bugzilla.novell.com/show_bug.cgi?id=639381#c0


           Summary: Using DataContractJsonSerializer and knownTypes
                    doesn't produce correct JSON
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.6.x
          Platform: Other
        OS/Version: Mac OS X 10.6
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: System
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: nutkracker at gmail.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us)
AppleWebKit/531.21.11 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10

JSONTestDisplay.cs

    public partial class JSONTestDisplay : Form
    {
        protected List<Type> _knownTypes = new List<Type>();
        protected DataContractJsonSerializer _json;
        protected Encoding _encoding = new ASCIIEncoding();

        public JSONTestDisplay()
        {
            InitializeComponent();
        }

        private void cmdSerialize_Click(object sender, EventArgs e)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                //Serialize to memory
                _json.WriteObject(stream, new Noddy() { Id = 1, Name = "Test",
Age = 12, Shoesize = 34 });

                //Write memory to string
                txtJSON.Text = _encoding.GetString(stream.ToArray());
            }
        }

        private void JSONTestDisplay_Load(object sender, EventArgs e)
        {
            _knownTypes.Add(typeof(Noddy));
            _json = new DataContractJsonSerializer(typeof(object),_knownTypes);
        }

        private void cmdDeserialize_Click(object sender, EventArgs e)
        {
            using (MemoryStream memoryStream = new
MemoryStream(_encoding.GetBytes(txtJSON.Text)))
            {
                memoryStream.Position = 0;
                object outObject = _json.ReadObject(memoryStream);

                MessageBox.Show("Success");
            }
        }
    }


Noddy.cs

    [DataContract]
    public class Noddy
    {
        /// <summary>
        /// Constrcutor
        /// </summary>
        public Noddy() { }

        [DataMember]
        public int Id { get; set; }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public int Age { get; set; }
        [DataMember]
        public int Shoesize { get; set; }
    }


The output from the above should produce:

{"__type":"Noddy:#JSONTest","Age":12,"Id":1,"Name":"Test","Shoesize":34}

BUT it produces this:

{"Age":12,"Id":1,"Name":"Test","Shoesize":34}


Help!


Reproducible: Always

Steps to Reproduce:
1.See code above
2.
3.
Actual Results:  

{"Age":12,"Id":1,"Name":"Test","Shoesize":34}

Expected Results:  

{"__type":"Noddy:#JSONTest","Age":12,"Id":1,"Name":"Test","Shoesize":34}

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list