Конвертировать массив json в список объектов - PullRequest
0 голосов
/ 12 сентября 2018

Это мой массив Json List of Objects, который я преобразовал в строку и отправил на мой контроллер

"[{\"Id\":\"fieldone\",\"Name\":\"fieldtwo\"}]"

Как я могу десериализовать его в моем контроллере и снова превратить в список объектов?

На данный момент вот что у меня есть:

var RoleList = JsonConvert.DeserializeObject<SampleViewModel>(Input.RoleList);

а это мои ViewModels

public class UserAddRoleListViewModel
{
    public String Id { get; set; }
    public String Name { get; set; }
}

public class SampleViewModel
{
    public List<UserAddRoleListViewModel> Test { get; set; }
}

В тот момент, когда я его запускаю, я получаю эту ошибку

Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'App.Data.ViewModels.SampleViewModel' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.

Что я должен сделать, чтобы преобразовать это в список UserAddRoleListViewModels?

РЕДАКТИРОВАТЬ: добавлен контроллер и соответствующая модель представления

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult VerifyRole(SaveUserNewRoleViewModel Input)
    {
        var RoleList = JsonConvert.DeserializeObject<SampleViewModel>(Input.RoleList);
        return null;
    }

public class SaveUserNewRoleViewModel
{
    [Required]
    public String RoleId { get; set; }
    public String RoleName { get; set; }
    public String RoleList { get; set; }
}

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Чтобы сделать следующий рабочий

var RoleList = JsonConvert.DeserializeObject<SampleViewModel>(Input.RoleList);

Ваш JSON должен быть как ниже

"{ Test:[{\"Id\":\"fieldone\",\"Name\":\"fieldtwo\"}] }"

В противном случае, для правильного результата для вашего JSON

"[{\"Id\":\"fieldone\",\"Name\":\"fieldtwo\"}]"

используйте ниже

var RoleList = JsonConvert.DeserializeObject<List<UserAddRoleListViewModel>>(Input.RoleList);
0 голосов
/ 12 сентября 2018

На основании показанного массива JSON и сообщения об ошибке, указывающего, что вы пытаетесь преобразовать массив в один объект, похоже, что вы должны были сделать

var RoleList = JsonConvert.DeserializeObject<List<UserAddRoleListViewModel>>(Input.RoleList);

для правильного разбора JSON в List<>

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