API ядра .net отправляющий объект массива - PullRequest
0 голосов
/ 01 октября 2018

У меня есть студенческий класс с массивом StudentPhones.Когда я удаляю свойство StudentPhones из класса Student, он отлично работает при публикации в Postman.Но когда добавляется свойство StudentPhones, то Postman выдает мне эту ошибку:

{"StudentPhones": ["Невозможно десериализовать текущий массив JSON (например, [1,2,3]) в тип 'DataAccess.StudentPhone', потому чтоДля корректной десериализации типу требуется объект JSON (например, {\ "name \": \ "value \"}). \ r \ nЧтобы исправить эту ошибку, либо измените объект JSON на объект JSON (например, {\ "name \": \"value \"}) или измените десериализованный тип на массив или тип, который реализует интерфейс коллекции (например, ICollection, IList), например List, который можно десериализовать из массива JSON. 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?(Я использую Angular 6 на самом деле, почтальон только для примера.)

мой JSON

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

1 Ответ

0 голосов
/ 01 октября 2018

В вашем JSON есть массив телефонов, поэтому вместо public StudentPhone StudentPhones { get; set; } в вашей модели вы должны иметь public List<StudentPhone> StudentPhones { get; set; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...