来自JSON的自定义C#对象

来自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":

我得到以下JSON响应

[
  {
    "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);
或者等待有更多这方面知识的人出现