问题
Initially my json was in the format,
"code": 0,
"message": "success",
"students": [
{
"id": "257633000000070001",
"name": "hjeke",
"percentage": 36,
"type": "Good",
},
{
"id": "257633000000073001",
"name": "Second",
"percentage": 4,
"type": "bad",
}]
And so i used the following class for deserializing using Newtonsoft.json
[DataContract]
public class students
{
[DataMember(Name = "code")]
public int Code { get; set; }
[DataMember(Name = "message")]
public string Message { get; set; }
[DataMember(Name = "students")]
public StudentDetail StudentDetail { get; set; }
}
[DataContract]
public class StudentDetail
{
[DataMember(Name = "id")]
public string ID { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "percentage")]
public double PercentageForEdit { get; set; }
[DataMember(Name = "type")]
public string Type { get; set; }
}
But now my json is changed to,
"code": 0,
"message": "success",
"students": {
"details":{
"hjeke": {
"id": "257633000000070001",
"name": "hjeke",
"percentage": 36,
"type": "Good",
},
"Second": {
"id": "257633000000073001",
"name": "Second",
"percentage": 4,
"type": "bad",
}
}
}
How should i change my students class so that,
StudentDetails = JsonConvert.DeserializeObject<Students>(data);
回答1:
If you using Newtonsoft.Json, try to use that classes:
public class StudentDetails
{
public string id { get; set; }
public string name { get; set; }
public int percentage { get; set; }
public string type { get; set; }
}
public class Student
{
public int code { get; set; }
public string message { get; set; }
public List<StudentDetails> students { get; set; }
}
After that, you can use that class to Deserialize responses using following way:
var parsedResponse = JsonConvert.DeserializeObject<Student>(data);
P.S. Of course, do not forget about [DataContract]
and [DataMember]
attributes
回答2:
first of all your Json does not seem to be valid, the surrounding brackets are missing for the object { }. To find your matching C# class there is a nice converter on this site
For your second Json with the object brackets:
"code": 0,
"message": "success",
"students": {
"details":{
"hjeke": {
"id": "257633000000070001",
"name": "hjeke",
"percentage": 36,
"type": "Good",
},
"Second": {
"id": "257633000000073001",
"name": "Second",
"percentage": 4,
"type": "bad",
}
}
}
it suggests these classes:
public class Hjeke
{
public string id { get; set; }
public string name { get; set; }
public int percentage { get; set; }
public string type { get; set; }
}
public class Second
{
public string id { get; set; }
public string name { get; set; }
public int percentage { get; set; }
public string type { get; set; }
}
public class Details
{
public Hjeke hjeke { get; set; }
public Second Second { get; set; }
}
public class Students
{
public Details details { get; set; }
}
public class RootObject
{
public int code { get; set; }
public string message { get; set; }
public Students students { get; set; }
}
You can play around with this generator tool by yourself.
来源:https://stackoverflow.com/questions/19783272/how-to-deserialize-json-data-in-windows-phone