.net核心API发送数组对象

时间:2018-10-01 10:55:28

标签: c# angular asp.net-core postman asp.net-core-webapi

我的学生课堂上配备了StudentPhone。当我从Student类中删除StudentPhones属性时,与Postman一起发布时效果很好。但是,当添加StudentPhones属性时,邮递员会给我这个错误:

{     “学生电话”:[         “无法将当前JSON数组(例如[1,2,3])反序列化为类型'DataAccess.StudentPhone',因为该类型需要JSON对象(例如{\“ name \”:\“ value \”})才能正确反序列化。\ r \ n要解决此错误,请将JSON更改为JSON对象(例如{\“ name \”:\“ value \”}),或将反序列化类型更改为数组或实现集合接口的类型(例如ICollection,IList),例如可以从JSON数组反序列化的List。还可以将JsonArrayAttribute添加到该类型中,以强制从JSON数组反序列化。\ r \ nPath'StudentPhones',第4行,位置23。”     ] }

    public class Student
    {
        public string StudentName { get; set; }
        public string StudentSurname { get; set; }
        public StudentPhone StudentPhones { get; set; }
    }

    public class StudentPhone
    {
        public int PhoneType{ get; set; }
        public string PhoneNumber { get; set; }
    }

    public async Task<ServiceResult> SaveStudent([FromBody]Student student)
    {
    }

如何发布此json? (我实际使用的是角度6,仅以邮递员为例。)

我的json

{
  "studentName": "test",
  "studentSurname": "test",
  "studentPhones": [
    {
      "phoneType": 1,
      "phoneNumber ": "111111111"
    },
    {
      "phoneType": 2,
      "phoneNumber ": "2222222222"
    }
  ],
}

1 个答案:

答案 0 :(得分:3)

您的JSON中有一系列电话,因此模型中应该有public StudentPhone StudentPhones { get; set; }

而不是模型中的public List<StudentPhone> StudentPhones { get; set; }