C# 如何使用json.net反序列化嵌套类?
我有以下课程C# 如何使用json.net反序列化嵌套类?,c#,json.net,C#,Json.net,我有以下课程 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; se
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; }
}
}
我试图使用Json.Net来反序列化requestbody,但我总是得到一个空的状态和数据知道为什么吗?
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);
var requestbody=@”
{
“回调结果”:
{
“TransactionToken”:“b65524 qwe”,
“状态”:0,
“消息”:“将应用程序发布到QAELEVEL操作已完成”,
“数据”:[],
“日志”:[“成功”
},
“请求编号”:“请求1234”
}"
var TransactionResult=JsonConvert.DeserializeObject(requestBody);
您的类需要具有子类型的属性
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);
public类CallbackResultsJson
{
公共CallBackResults CallBackResults{get;set;}
公共字符串RequestNumber{get;set;)
公共类回调结果
{
公共字符串状态{get;set;}
公共字符串消息{get;set;}
公共字符串数据{get;set;}
公共字符串日志{get;set;}
公共字符串StatusText{get;set;}
公共字符串TransactionToken{get;set;}
}
}
var result=JsonConvert.DeserializeObject(requestBody);
您的类需要具有子类型的属性
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);
public类CallbackResultsJson
{
公共CallBackResults CallBackResults{get;set;}
公共字符串RequestNumber{get;set;)
公共类回调结果
{
公共字符串状态{get;set;}
公共字符串消息{get;set;}
公共字符串数据{get;set;}
公共字符串日志{get;set;}
公共字符串StatusText{get;set;}
公共字符串TransactionToken{get;set;}
}
}
var result=JsonConvert.DeserializeObject(requestBody);
只需要做一点改变。
你们班:
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; }
}
}
您的数据:
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);
var requestbody=@”
{
“回调结果”:
{
“TransactionToken”:“b65524 qwe”,
“状态”:0,
“”消息“”:“”将应用程序发布到QaLevel操作已完成“”,
“数据”:[“数据1”、“数据2”],
“日志”:“成功”
},
“请求编号”:“请求1234”
}";
var result=JsonConvert.DeserializeObject(requestbody);
只需要做一点改变。 你们班:
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; }
}
}
您的数据:
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);
var requestbody=@”
{
“回调结果”:
{
“TransactionToken”:“b65524 qwe”,
“状态”:0,
“”消息“”:“”将应用程序发布到QaLevel操作已完成“”,
“数据”:[“数据1”、“数据2”],
“日志”:“成功”
},
“请求编号”:“请求1234”
}";
var result=JsonConvert.DeserializeObject(requestbody);
我使用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);
公共类回调结果
{
公共字符串TransactionToken{get;set;}
公共int状态{get;set;}
公共字符串消息{get;set;}
公共列表数据{get;set;}
公共列表日志{get;set;}
}
公共类CallbackResultsRootObj
{
public CallbackResults VdiCallbackResults{get;set;}
公共字符串RequestNumber{get;set;}
}
var vdiTransactionResult=JsonConvert.DeserializeObject(requestBody);
我使用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);
公共类回调结果
{
公共字符串TransactionToken{get;set;}
公共int状态{get;set;}
公共字符串消息{get;set;}
公共列表数据{get;set;}
公共列表日志{get;set;}
}
公共类CallbackResultsRootObj
{
public CallbackResults VdiCallbackResults{get;set;}
公共字符串RequestNumber{get;set;}
}
var vdiTransactionResult=JsonConvert.DeserializeObject(requestBody);
在JSON中,状态
是一个整数,而不是字符串,数据
是一个数组,而不是字符串,日志
是一个格式错误的数组(无括号)。您应该会收到此JSON的异常,即使您修复了日志的数组,也会因为类型不匹配而收到异常。请发布实际代码,此代码甚至不会编译,因为格式不正确的字符串(您在字符串中使用“
,但应使用”
),您缺少一个分号,并且在反序列化调用中使用的类名与上面的示例类不匹配。您基本上在此处重新键入了问题并犯了其他错误。在JSON中,Status
是整数,而不是字符串,Data
是数组,而不是字符串,Log
是格式错误的数组(无结束括号)。此JSON应该会出现异常,即使您修复了日志的数组
,也会因为类型不匹配而出现异常。请发布实际代码,由于字符串格式错误,此代码甚至无法编译(您在字符串中使用“
,但应使用”
),您缺少分号,并且在反序列化调用中使用的类名与上面的示例类不匹配。您基本上在此处重新键入了问题,并出现了其他错误。