来自JSON的自定义C#对象
我得到以下JSON响应来自JSON的自定义C#对象,c#,.net,json,C#,.net,Json,我得到以下JSON响应 [ { "Issue": { "ID": 80, "Name": "Cold", "Accuracy": 90, "Icd": "J00", "IcdName": "Acute nasopharyngitis [common cold]", "ProfName": "Common cold", "Ranking": 1 }, "Specialisation":
[
{
"Issue": {
"ID": 80,
"Name": "Cold",
"Accuracy": 90,
"Icd": "J00",
"IcdName": "Acute nasopharyngitis [common cold]",
"ProfName": "Common cold",
"Ranking": 1
},
"Specialisation": [
{
"ID": 15,
"Name": "General practice",
"SpecialistID": 0
}
]
}
]
我试着按照指示去做。但我似乎不适合这个解决方案。在文档中,只解释了已经预定义了类的场景。有什么帮助吗?假设
你的问题甚至不清楚。你在问什么?我想你是在问如何从JSON生成C类
解决方案
首先,JSON是一个数组(如果它的顶级标记是[],那么它就是一个数组本身。如果它的顶级标记是{},那么它就是一个单独的对象
因此,您得到的是一个返回的数组,其中包含一个结果
转到并粘贴代码将提供以下功能:
public class Issue
{
public int ID { get; set; }
public string Name { get; set; }
public int Accuracy { get; set; }
public string Icd { get; set; }
public string IcdName { get; set; }
public string ProfName { get; set; }
public int Ranking { get; set; }
}
public class Specialisation
{
public int ID { get; set; }
public string Name { get; set; }
public int SpecialistID { get; set; }
}
public class RootObject
{
public Issue Issue { get; set; }
public List<Specialisation> Specialisation { get; set; }
}
公共类问题
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共整数精度{get;set;}
公共字符串Icd{get;set;}
公共字符串IcdName{get;set;}
公共字符串ProfName{get;set;}
公共整数排序{get;set;}
}
公共课专业化
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共int{get;set;}
}
公共类根对象
{
公共问题{get;set;}
公共列表专门化{get;set;}
}
您可以看到它创建了一个RootObject
几乎表明它是一个单一对象,但是您需要将其反序列化为列表
,而不仅仅是RootObject
因此,在C#中,这将是
var result=JsonConvert.DeserializeObject(JSONString);
您应该准备好一个强类型C#类,以便将Json响应反序列化为…如果要使用一个生成器,它会得出以下结论:
public class Issue
{
[JsonProperty("ID")]
public int ID { get; set; }
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("Accuracy")]
public int Accuracy { get; set; }
[JsonProperty("Icd")]
public string Icd { get; set; }
[JsonProperty("IcdName")]
public string IcdName { get; set; }
[JsonProperty("ProfName")]
public string ProfName { get; set; }
[JsonProperty("Ranking")]
public int Ranking { get; set; }
}
public class Specialisation
{
[JsonProperty("ID")]
public int ID { get; set; }
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("SpecialistID")]
public int SpecialistID { get; set; }
}
public class RootObject
{
[JsonProperty("Issue")]
public Issue Issue { get; set; }
[JsonProperty("Specialisation")]
public IList<Specialisation> Specialisation { get; set; }
}
公共类问题
{
[JsonProperty(“ID”)]
公共int ID{get;set;}
[JsonProperty(“名称”)]
公共字符串名称{get;set;}
[JsonProperty(“准确性”)]
公共整数精度{get;set;}
[JsonProperty(“Icd”)]
公共字符串Icd{get;set;}
[JsonProperty(“IcdName”)]
公共字符串IcdName{get;set;}
[JsonProperty(“ProfName”)]
公共字符串ProfName{get;set;}
[JsonProperty(“排名”)]
公共整数排序{get;set;}
}
公共课专业化
{
[JsonProperty(“ID”)]
公共int ID{get;set;}
[JsonProperty(“名称”)]
公共字符串名称{get;set;}
[JsonProperty(“SpecialistID”)]
公共int{get;set;}
}
公共类根对象
{
[JsonProperty(“发行”)]
公共问题{get;set;}
[JsonProperty(“专业化”)]
公共IList专业化{get;set;}
}
然后使用
RootObject jsonAsCSharpClass = JsonConvert.DeserializeObject<RootObject>(jsonResponse);
RootObject jsonAsCSharpClass=JsonConvert.DeserializeObject(jsonResponse);
虽然我不是100%确定这个类对您有好处,但是我从来没有在根响应是数组的响应中遇到过一些问题,如果不首先定义根属性,请查看它是如何以“[”而不是{??”开头的?您可能还想尝试一下
List<RootObject> jsonAsCSharpClass = JsonConvert.DeserializeObject<List<RootObject>>(jsonResponse);
List jsonascharpClass=JsonConvert.DeserializeObject(jsonResponse);
或者等待有更多这方面知识的人出现