我收到以下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
}
]
}
]
我尝试按照here给出的说明进行操作。但我似乎无法在这里找到解决方案。并且在文档中仅解释了已预定义类的方案。有什么帮助吗?
答案 0 :(得分:5)
你的问题甚至不清楚。你在问什么?我假设你问的是如何从那个JSON创建一个C#类?
首先,JSON是一个数组(如果它的顶级标签是[],它是一个数组本身。如果它的顶级是{},那么它就是一个对象。
所以你所拥有的是一个返回的数组,其中包含一个结果。
转到json2csharp并粘贴代码即可:
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; }
}
你可以看到它创建的RootObject
几乎表示它是一个单个对象,但你需要将其反序列化为List<RootObject>
,而不仅仅是RootObject
。
所以在C#中将是var result = JsonConvert.DeserializeObject<List<RootObject>>(theJsonString);
答案 1 :(得分:0)
你应该有一个强类型的c#类准备好让你的Json Response被反序列化为... Json Utils有一个生成器可供使用,它想出了这个:
conv_pure
然后使用
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; }
}
我不是100%确定这个类对你有好处,我从来没有一个响应,其中根响应是一个数组,没有先定义一个根属性,看看它是如何从开始的“[ “而不是 { ???您可能还想尝试
RootObject jsonAsCSharpClass = JsonConvert.DeserializeObject<RootObject>(jsonResponse);
或者等待有关该主题的更多知识的人来...