简体   繁体   English

如何使用json.net反序列化嵌套类?

[英]How to use json.net to Deserialize a nested class?

I have the following class 我有以下课程

 public class CallbackResultsJson
    {
    public class CallbackResults
    {

        public string Status { get; set; }
        public string Message { get; set; }
        public string Data { get; set; }
        public string Log { get; set; }
        public string StatusText { get; set; }
        public string TransactionToken { get; set; }
    }
}

I am trying to use Json.Net to Deserialize requestbody but I am always getting a null for status,data. 我正在尝试使用Json.Net对请求主体进行反序列化,但是我总是会得到状态,数据为null的信息。 any ideas why ? 有什么主意吗?

var requestbody =@"
{
    "CallbackResults":
    {
        "TransactionToken":"b65524-qwe",
        "Status":0,
        "Message":"Publish Application to QaLevel Operation Completed",
        "Data":[],
        "Log":["sucess"
    },
    "RequestNumber":"REQ1234"
}"

var TransactionResult = JsonConvert.DeserializeObject<CallbackResultsJson.CallbackResults>(requestBody);

Just a little bit of change should be done. 应该做一点改变。 Your class: 你的班:

public class CallbackResultsJson
{
    public CallbackResultsClass CallbackResults { get; set; }
    public string RequestNumber { get; set; }

    public class CallbackResultsClass
    {
        public int Status { get; set; }
        public string Message { get; set; }
        public string[] Data { get; set; }
        public string Log { get; set; }
        public string TransactionToken { get; set; }
    }
}

Your data: 您的数据:

var requestbody = @"
        {
            ""CallbackResults"":
            {
                ""TransactionToken"":""b65524-qwe"",
                ""Status"":0,
                ""Message"":""Publish Application to QaLevel Operation Completed"",
                ""Data"":[""Data1"", ""Data2""],
                ""Log"":""sucess""
            },
            ""RequestNumber"":""REQ1234""
        }";


        var result = JsonConvert.DeserializeObject<CallbackResultsJson>(requestbody);

在此处输入图片说明

Your class needs to have a property of the sub-type, 您的课程需要具有子类型的属性,

public class CallbackResultsJson
{
    public CallBackResults CallbackResults { get; set; }

    public string RequestNumber { get; set; )

    public class CallbackResults
    {

        public string Status { get; set; }
        public string Message { get; set; }
        public string Data { get; set; }
        public string Log { get; set; }
        public string StatusText { get; set; }
        public string TransactionToken { get; set; }
    }
}

var result = JsonConvert.DeserializeObject<CallbackResultsJson>(requestBody);

I have used json2csharp.com to convert requestbody to c# classes and it generated these classes.it worked 我已经使用json2csharp.com将requestbody转换为c#类,并生成了这些类。

 public class CallbackResults
    {
        public string TransactionToken { get; set; }
        public int Status { get; set; }
        public string Message { get; set; }
        public List<string> Data { get; set; }
        public List<string> Log { get; set; }
    }

    public class CallbackResultsRootObj
    {
        public CallbackResults VdiCallbackResults { get; set; }
        public string RequestNumber { get; set; }
    }
  var vdiTransactionResult = JsonConvert.DeserializeObject<CallbackResultsRootObj>(requestBody);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM