JSON 转换反序列化对象

JSON Convert Deserialize Object

我的 JSON 到 XML 代码有问题。它没有将值分配给对象,我不知道为什么。请让我知道我做错了什么。

我的 C# 代码:

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>

我的"JSONData"字符串:

{"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"}}}}

root.RESPONSE_GROUP.MISMOVersionID 的值是 NULL 以及应该填充的任何其他值。我知道我在这里做错了什么,但我无法弄清楚它是什么。

请帮忙!提前致谢。

问题是您的 JSON 在某些 属性 名称前面包含 @ 符号。例如:

"@MISMOVersionID":"2.4"

这里有两个选项:

  • 将 JSON 修复为 而不是 ,例如"@MISMOVersionID":"2.4"
  • 使用 JsonPropertyAttribute 告诉 Json.NET 在 JSON 中期望哪个 属性 名称,例如

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