Проблема почтальона Не удалось преобразовать значение JSON в agsamplewebapi.Model.Employee. - PullRequest
0 голосов
/ 29 марта 2020

Я развиваю ASP. NET Базовое веб-приложение API, которое будет выставлено на Angular 6

После разработки веб-API-запроса Post, я перешел к PostMan, чтобы проверить запрос Post, который получает ошибку "The JSON значение не может быть преобразовано в agsamplewebapi.Model.Employee. Путь: $ | LineNumber: 0 | BytePositionInLine: 1. "

Код модели

 public class Employee
  {
    public int Id { get; set; }
    public string Eno { get; set; }
    public string Ename { get; set; }
    public decimal Salary { get; set; }
    public string Gender { get; set; }
    public string Designation { get; set; }
  }

Код контроллера

[EnableCors("CorsPolicy")]
  [Route("api/[controller]")]
  [ApiController]
  public class EmployeesController : ControllerBase
  {
    private readonly EmployeeContext _context;

    public EmployeesController(EmployeeContext context)
    {
      _context = context;
    }
    // POST: api/Employees
    [HttpPost]
    public async Task<ActionResult<Employee>> PostEmployee(Employee employee)
    {
      _context.Employee.Add(employee);
      await _context.SaveChangesAsync();

      return CreatedAtAction("GetEmployee", new { id = employee.Id }, employee);
    }

 }

при использовании Почтальона с https://localhost: 44333 / api / Сотрудники с указанным ниже телом с Json выбранной ошибкой будет отображается в окне Почтальона "Не удалось преобразовать значение JSON в agsamplewebapi.Model.Employee. Путь: $ | LineNumber: 0 | BytePositionInLine: 1."

[
    {    
        "Eno": "112",
        "Ename": "zzz",
        "Salary": 1888.00,
        "Gender": "M",
        "Designation": "gghh"
    }
]

Предоставьте мне подходящее руководство для решения этой проблемы

1 Ответ

1 голос
/ 29 марта 2020

У вас есть два решения для устранения проблемы:

1 - Удалить [] из Json, как мой комментарий:

{    
   "Eno": "112",
   "Ename": "zzz",
   "Salary": 1888.00,
   "Gender": "M",
   "Designation": "gghh"
}

2 - [] означает коллекции, то вы можете изменить подпись действия, не изменяя Json на:

public async Task<ActionResult<Employee>> PostEmployee(IEnumerable<Employee> employee)
{}
...