在我的项目中,我们的后端以 JSON 对象的形式发送学生数据。我必须创建一个模型来膨胀该数据,并创建一个
ViewModel
使其具有反应性。我正在使用Communitytoolkit.MVVM
。从服务器返回的数据如下所示:
[
{
"id": "6a49c6de7634f86e8cadcae2",
"firstName": "Suresh",
"lastName": "Oberoi",
"photo": "https://nagpur-s3-bucket.s3.amazonaws.com/Ss4KAD04Byb4SsmGr5kSOQ4S7XZRhQ.jpeg",
"graduated": false,
"coursesTaken": {
"id": "7a5cc6db90d9e78f630178ae",
"name": "Intro to DB",
"semester": "Fall 2020",
"teacher": {
"id": "7a5cc6db90d9e78f630178ae",
"firstName": "Chulbul",
"lastName": "Pandey",
"teacherImage": "chulbul.jpeg"
},
},
},
{ /* More documents in same pattern as above */ }
]
由此我必须创建所需的模型和 ViewModel。
我有以下问题:
我可以创建一个包含类似内容的简单模型吗:
public class Student {
public string Id {get, set};
public string firstName {get, set};
public string lastName {get, set};
public string photo {get set);
public bool graduated {get, set},
List<Course) coursesTaken {get; set};
}
Student
模型与视图模型绑定?您的类定义与您的 Json 数据不匹配。代码
List<Course) coursesTaken {get; set};
是一个列表,而json字符串是一个对象。
"coursesTaken": {
"id": "7a5cc6db90d9e78f630178ae",
"name": "Intro to DB",
"semester": "Fall 2020",
"teacher": {
"id": "7a5cc6db90d9e78f630178ae",
"firstName": "Chulbul",
"lastName": "Pandey",
"teacherImage": "chulbul.jpeg"
}
如果您希望变量
coursesTaken
成为列表,则需要在内部json字符串之外添加[]
。
[
{
"id": "6a49c6de7634f86e8cadcae2",
"firstName": "Suresh",
"lastName": "Oberoi",
"photo": "https://nagpur-s3-bucket.s3.amazonaws.com/Ss4KAD04Byb4SsmGr5kSOQ4S7XZRhQ.jpeg",
"graduated": false,
"coursesTaken": [
{
"id": "7a5cc6db90d9e78f630178ae",
"name": "Intro to DB",
"semester": "Fall 2020",
"teacher": {
"id": "7a5cc6db90d9e78f630178ae",
"firstName": "Chulbul",
"lastName": "Pandey",
"teacherImage": "chulbul.jpeg"
}
},
{
"id": "7a5cc6db90d9e78f630178ae",
"name": "Intro to DB",
"semester": "Fall 2020",
"teacher": {
"id": "7a5cc6db90d9e78f630178ae",
"firstName": "Chulbul",
"lastName": "Pandey",
"teacherImage": "chulbul.jpeg"
}
}
]
}
]
并且您还需要检查变量
teacher
是 List
还是普通对象。确保Json数据与实际定义的数据类型一致,否则数据将无法解析成功。
假设Json数据就像我上面发布的那样,你可以像下面这样定义代码:
public class Student
{
public string id { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
public string photo { get; set; }
public bool graduated { get; set; }
public List<Course> coursesTaken { get; set; } = new List<Course>();
//public Course coursesTaken { get; set; }
}
public class Course
{
public string id { get; set; }
public string name { get; set; }
public string semester { get; set; }
//public List<Teacher> teacher { get; set;} = new List<Teacher>();
public Teacher teacher { get; set; }
}
public class Teacher
{
public string id { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
public string teacherImage { get; set; }
}
然后你可以使用方法
JsonConvert.DeserializeObject<List<Student>>(jsonstr);
将json转换为List<Student> StudentsList;