[英]Unable to Deserialize Json string into a .NET object, but the object is null after deserializing
我正在尝试获取测试套件的 json 响应并将它们放在我可以查询的列表中。 我相信我已经正确设置了对象以进行反序列化,但是当我查看调试器中的值时,它为空。 我不知道问题是什么,真的需要一些帮助。 我能够通过使用 Newtonsoft.Json.Linq JObjects 获得我需要的数据,但我的高级工程师说这不是最佳实践,他的方法对我不起作用。 它适用于他构建的另一个工具,我几乎完全复制了他所做的。
示例 Json:
{
"id": 81,
"revision": 6,
"project": {
"id": "499b955d-7143-4382-932e-9cd17df45f83",
"name": "Project1",
"url": "https://dev.azure.com/fabrikam/_apis/projects/MyProject",
"state": "unchanged",
"visibility": "unchanged"
},
"lastUpdatedBy": {
"displayName": "Fabrikam Fiber",
"url": "https://vssps.dev.azure.com/fabrikam/Aea08ebc7-105f-4bb2-a36b-f92e0e9de65a/_apis/Identities/0fdbdad8-6afb-6149-9af9-c0a216137d1d",
"_links": {
"avatar": {
"href": "https://dev.azure.com/fabrikam/_apis/GraphProfile/MemberAvatars/aad.MGZkYmRhZDgtNmFmYi03MTQ5LTlhZjktYzBhMjE2MTM3ZDFk"
}
},
"id": "9b6bee0e-28b2-42b6-ab5b-5122b63d473c",
"uniqueName": "fabrikamfiber1@microsoft.com",
"imageUrl": "https://dev.azure.com/fabrikam/_api/_common/identityImage?id=0fdbdad8-6afb-6149-9af9-c0a216137d1d",
"descriptor": "win.Uy0xLTUtMjEtMjE0Njc3MzA4NS05MDMzNjMyODUtNzE5MzQ0NzA3LTIwMjE0OTM"
},
"lastUpdatedDate": "2018-08-31T10:12:20.33Z",
"plan": {
"id": 79,
"name": "Sample Test Plan"
},
"_links": {
"_self": {
"href": "https://dev.azure.com/fabrikam/MyProject/_apis/testplan/Plans/79/Suites/81"
},
"testCases": {
"href": "https://dev.azure.com/fabrikam/MyProject/_apis/test/Plans/79/Suites/81/TestCases"
},
"testPoints": {
"href": "https://dev.azure.com/fabrikam/MyProject/_apis/test/Plans/79/Suites/81/Points"
}
},
"suiteType": "staticTestSuite",
"name": "Sample Static Suite 1",
"parentSuite": {
"id": 80,
"name": "Sample Test Plan"
},
"inheritDefaultConfigurations": true
}
这是我的代码:
[Route("api/MyCodeController")]
[ApiController]
public class MyCodeController : ControllerBase
{
public void Get(string Var1, string Var2, string Var3, string Var4, string Var5)
{
HttpClient HttpClient = new HttpClient();
string TestPlanUri = "uri";
using (var RequestMessage = new HttpRequestMessage(HttpMethod.Get, TestPlanUri))
{
using (var TestSuites = HttpClient.SendAsync(RequestMessage).Result)
{
var ResObject = TestSuites.Content.ReadAsAsync<ExpandoObject>().Result;
var TargetSuite = JsonConvert.DeserializeObject<RootObject>(JsonConvert.SerializeObject(ResObject)).ChildSuites.ToList();
Console.WriteLine(TargetSuite[0].parentSuite.name);
}
}
}
public class CloneTargetSuite
{
public string id { get; set; }
public string name { get; set; }
public ParentSuite parentSuite { get; set; }
}
public class ParentSuite
{
public int id { get; set; }
public string name { get; set; }
}
public class RootObject
{
public List<CloneTargetSuite> ChildSuites { get; set; }
}
}
我认为您的类结构与您的 JSON 不匹配。 我可以使用这个类结构反序列化你的 JSON。
public class Rootobject
{
public int id { get; set; }
public string name { get; set; }
public Parentsuite parentSuite { get; set; }
}
public class Parentsuite
{
public int id { get; set; }
public string name { get; set; }
}
var obj = JsonConvert.DeserializeObject<Rootobject>(json);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.