我正在使用SlickGrid,并试图在用户按下Enter键时将数据从网格添加到DB。它是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": "" };
所有数据都来自slickgrid中的网格
这是我反序列化对象的方式:
var slcgrd= JsonConvert.DeserializeObject<List<SlickGridTest>>(mydata);
我希望以数组的形式获取值(例如[1,2,3]
),而我以object ( Object {id: 43, t_nome: "name name", t_prof: "prof", …} )
的身份获取
答案 0 :(得分:1)
因此,您似乎正在尝试反序列化为List<SlickGridTest>
。反序列化到列表时,反序列化程序期望看到JSON数组结构。因此,您有两种选择。
发送带有单个项目的数组:
var myJSON = JSON.stringify( [item] );
或将控制器的反序列化更改为期望包含单个项目:
var slcgrd= JsonConvert.DeserializeObject<SlickGridTest>(mydata);