这是我的“ Json对象列表”数组,我对其进行了字符串化处理并将其发送给控制器
"[{\"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列表?
编辑:添加了控制器和相关的ViewModel
[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; }
}
答案 0 :(得分:0)
要使以下工作正常
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);