Можно ли изменить с объекта JSON на массив JSON в контроллере - PullRequest
0 голосов
/ 24 мая 2019

Я использовал SlickGrid и пытался добавить данные из сетки в БД, когда пользователь нажимал клавишу Enter.Это sendig и объект JSON (например, {"name":"value"}), и он мне нужен как массив, так как я использую тип 'System.Collections.Generic.List'.Возможно ли в контроллере изменить его на массив JSON?Данные получены из самой сетки.Заранее спасибо!

Я видел подобные ситуации, но я все еще получаю сообщение об ошибке:

Newtonsoft.Json.JsonSerializationException: 'Невозможно десериализовать текущий объект JSON (например, {"name ":" value "}) в тип 'System.Collections.Generic.List`1 [DAL.SlickGridTest]', поскольку для корректной десериализации тип требует массив JSON (например, [1,2,3]).

это мое действие public ActionResult EditGridEnter(string mydata) и это мое jquery $.post

grid.onKeyDown.subscribe(function(e) {
  var keyPressed = event.keyCode || event.which;
  if (keyPressed == 13) {
    var myJSON = JSON.stringify(item);
    $.post("/SlickGridTest/EditGridEnter", $("input[name=mydata]").val(myJSON));
  }
});

Это то, что исходит от предмета:

var idData = jsonResult[key].id + 1;
var item = { "id": idData, "t_nome": "", "t_prof": "", "t_data": "", "t_morada": "", "t_percCompleto": "" };

все данные поступают изgrid в slickgrid

Вот как я десериализую объект:

var slcgrd= JsonConvert.DeserializeObject<List<SlickGridTest>>(mydata);

Я ожидаю получить значения в виде массива (например, [1,2,3]) и получаю какobject ( Object {id: 43, t_nome: "name name", t_prof: "prof", …} )

1 Ответ

1 голос
/ 24 мая 2019

Итак, похоже, вы пытаетесь десериализовать до List<SlickGridTest>. При десериализации в список десериализатор ожидает увидеть структуру массива JSON. Таким образом, у вас есть два варианта.

Либо отправьте массив с одним элементом:

var myJSON = JSON.stringify( [item] );

или измените десериализацию контроллера так, чтобы вместо него ожидался один элемент:

var slcgrd= JsonConvert.DeserializeObject<SlickGridTest>(mydata);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...