我是 JSON.NET 新手,并且一直在使用最近发布的新 Marvel API。
当我调用此 API 时,它将返回以下 JSON 数据结构:-
{
"code": 200,
"status": "Ok",
"etag": "f0fbae65eb2f8f28bdeea0a29be8749a4e67acb3",
"data":
{
"offset": 0,
"limit": 20,
"total": 30920,
"count": 20,
"results": [{array of objects}}]
}
}
我可以像这样为此数据创建类:
public class Rootobject
{
public int code { get; set; }
public string status { get; set; }
public string etag { get; set; }
public Data data { get; set; }
}
public class Data
{
public int offset { get; set; }
public int limit { get; set; }
public int total { get; set; }
public int count { get; set; }
public Result[] results { get; set; }
}
public class Result
{
}
现在,我的问题。从 API 返回的结果可以与不同的对象相关,它可能是与角色、漫画、系列等相关的结果。这些对象都拥有不同的属性。
我需要能够根据结果相关的实体类型交换结果类属性?
这真的可以做到吗?
最佳答案
您可以使用var jObj = JObject.Parse(jsonString)
,然后通过对象上可用的属性来发现它是什么对象类型。
jObj["someComicSpecificProperty"] != null
但这并不是完整的证明,需要在结果数组的每个对象的基础上完成。
我见过人们使用的另一种方法是在对象上有一个属性“typeName”。
但是,此问题的根本原因是您尝试对非强类型的属性进行强类型化。我真的建议将这些不同类型的结果分成不同的属性,这样您就不会遇到此问题。
关于c# - JSON.NET 解析嵌套数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21830628/