Веб-API REST ASP.NET C # - POST Несколько значений JSON - PullRequest
0 голосов
/ 15 апреля 2019

Я изо всех сил пытаюсь найти решение моей проблемы: у меня есть действительно простой Web API в C #, который прекрасно умеет GET, POST, PUT и DELETE, но все работает с простым вводом JSON:

{
   "FirstName": "Sam 10",
   "LastName": "Wicht 10",
   "Gender": "Male",
   "Salary": 140000
}

То, что я хочу сделать, это ПОСТАВИТЬ много сотрудников, как:

"employees": [{
   "FirstName": "Sam 10",
   "LastName": "Wicht 10",
   "Gender": "Male",
   "Salary": 140000
}, {
   "FirstName": "Sam 11",
   "LastName": "Wicht 11",
   "Gender": "Male",
   "Salary": 99000
}]

И в моем коде C # я получаю, например, List<Employee>, содержащий каждого сотрудника из JSon, и затем я зацикливаю для каждого ... обновление каждого.

С точки зрения производительности, это что-то действительно плохое? Думая, что я могу ограничить размер списка и избежать запуска какого-либо кода, если .Count() выше X, вы, ребята, пожалуйста, дайте мне знать, как извлечь это из ввода JSON?

Это класс Сотрудник, который у меня есть:

public partial class Employee
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }
    public Nullable<int> Salary { get; set; }
}

Должен ли я включить новый класс, представляющий IEnumerable<Employee> со всеми параметрами?

Это для целей обучения и тестирования, и я попытался получить [FromBody] List<Employee> myVariableName; returns null;

1 Ответ

2 голосов
/ 15 апреля 2019

Вы получаете нулевое значение, потому что в вашем образце json есть включающий employee объект. POST вместо:

[{
   "FirstName": "Sam 10",
   "LastName": "Wicht 10",
   "Gender": "Male",
   "Salary": 140000
}, {
   "FirstName": "Sam 11",
   "LastName": "Wicht 11",
   "Gender": "Male",
   "Salary": 99000
}]

И это будет соответствовать определению вашего контроллера:

public ActionResult Post(List<Employee> employees)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...