JSON Convert Deserialize Object

I have an issue with my JSON to XML code. It's not assigning the values to the Object and I cannot figure out why. Please let me know what I am doing wrong.

My C# code:

using Newtonsoft.Json;
using System.Xml;

namespace JSONTest
{
    public class Program
    {
        static void Main(string[] args)
        {
            string fileName = "C:\\Code\\JSONTest\\data\\response.xml";

            // Convert XML Data into JSON Data
            XmlDocument xmlFile = new XmlDocument();
            xmlFile.Load(fileName);
            string jsonData = JsonConvert.SerializeXmlNode(xmlFile);

            // Convert JSON Data into Object
            RootObject root = JsonConvert.DeserializeObject<RootObject>(jsonData);
            var data = root.RESPONSE_GROUP;
            Console.ReadLine();
        }
    }

        public class RootObject
        {
            public RESPONSEGROUP RESPONSE_GROUP { get; set; }
        }

        public class RESPONSEGROUP
        {
            public string MISMOVersionID { get; set; }
            public object RESPONDING_PARTY { get; set; }
            public object RESPOND_TO_PARTY { get; set; }
            public RESPONSE RESPONSE { get; set; }
        }

        public class RESPONSE
        {
            public string ResponseDateTime { get; set; }
            public KEY KEY { get; set; }
            public STATUS STATUS { get; set; }
        }

        public class KEY
        {
            public string _Name { get; set; }
            public string _Value { get; set; }
        }

        public class STATUS
        {
            public string _Code { get; set; }
            public string _Condition { get; set; }
            public string _Description { get; set; }
            public string _Name { get; set; }
        }
}

XML

<RESPONSE_GROUP MISMOVersionID="2.4">
    <RESPONDING_PARTY/>
    <RESPOND_TO_PARTY/>
    <RESPONSE ResponseDateTime="2015-02-19T10:32:11-06:00">
        <KEY _Name="LOSClientID" _Value="3000799866"/>
        <STATUS _Code="S0010" _Condition="Success" _Description="TEST DESC" _Name="Complete"/>
    </RESPONSE>
</RESPONSE_GROUP>

My "JSONData" string:

{"RESPONSE_GROUP":{"@MISMOVersionID":"2.4","RESPONDING_PARTY":null,"RESPOND_TO_PARTY":null,"RESPONSE":{"@ResponseDateTime":"2015-02-19T10:32:11-06:00","KEY":{"@_Name":"LOSClientID","@_Value":"3000799866"},"STATUS":{"@_Code":"S0010","@_Condition":"Success","@_Description":"THIS IS THE DESCRIPTION.","@_Name":"Complete"}}}}

The value of: root.RESPONSE_GROUP.MISMOVersionID is NULL as well as any other values that should have been populated. I know I'm doing something wrong here, but I cannot figure out what it is.

Please help! Thanks in advance.

Jon Skeet
people
quotationmark

The problem is that your JSON contains @ signs in front of some property names. For example:

"@MISMOVersionID":"2.4"

There are two options here:

  • Fix the JSON to not have that, e.g. "@MISMOVersionID":"2.4"
  • Use JsonPropertyAttribute to tell Json.NET which property name to expect in the JSON, e.g.

    [JsonProperty("@MISMOVersionID")]
    public string MISMOVersionID { get; set; }
    

people

See more on this question at Stackoverflow