Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将json数组反序列化为c#列表_C#_Javascript_Jquery_Ajax_Asp.net Mvc - Fatal编程技术网

无法将json数组反序列化为c#列表

无法将json数组反序列化为c#列表,c#,javascript,jquery,ajax,asp.net-mvc,C#,Javascript,Jquery,Ajax,Asp.net Mvc,有这么多json序列化/反序列化选项,所以我不确定使用哪一个是正确的,以及为什么有这么多选项来做看起来相同的事情。我见过JsonConvert、JsonSerializer、JavaScriptSerializer和其他几个 正在寻找有关将json数组正确反序列化为复杂对象的c#列表的帮助 JQUERY: var users = []; for (var i = 0; i < response.length; i++) { var u =

有这么多json序列化/反序列化选项,所以我不确定使用哪一个是正确的,以及为什么有这么多选项来做看起来相同的事情。我见过JsonConvert、JsonSerializer、JavaScriptSerializer和其他几个

正在寻找有关将json数组正确反序列化为复杂对象的c#列表的帮助

JQUERY:

 var users = [];
    for (var i = 0; i < response.length; i++) 
    {
        var u = 
        {
            Id: response[i].id,
            UserName: response[i].username,
            FirstName: response[i].first_name,
            LastName: response[i].last_name    
        };
        users[i] = u;
    }

    var ul = JSON.stringify({ 'userlist': users});
    $.ajax({
        type: "POST",
        url: "/myurl/addusers",
        data: { 'userlist': ul },
        dataType: "json",
        success: function (response) {  

        },
        error: function (xhr, status, error) {

        }
    });
var用户=[];
对于(变量i=0;i
C#(这不起作用):

[HttpPost]
公共操作结果AddUsers(字符串用户列表)
{
JavaScriptSerializer ser=新的JavaScriptSerializer();
var users=ser.Deserialize(userlist);
...
}  
[可序列化]
公共类用户
{
公共字符串Id{get;set;}
公共字符串用户名{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
}
尝试以下方法:

var ul = JSON.stringify({ 'userlist': users});
    $.ajax({
        type: "POST",
        url: "/myurl/addusers",
        data: ul ,
        content-Type: 'application/json; charset=utf-8', 
        dataType: "json",
        success: function (response) {  

        },
        error: function (xhr, status, error) {

        }
    });
您已经在json
ul
中设置了
userlist
,因此只需将其直接指定给数据,而无需再次将其包装在
userlist
上,还可以设置contentType
内容类型:'application/json;在ajax设置中,charset=utf-8'

此外,在您的行动中,只需使用:

    public ActionResult AddUsers(List<User> userlist)
    {
     //no need to do JavaScriptSerializer 
public ActionResult AddUsers(List userlist)
{
//无需使用JavaScriptSerializer
尝试以下方法:

var ul = JSON.stringify({ 'userlist': users});
    $.ajax({
        type: "POST",
        url: "/myurl/addusers",
        data: ul ,
        content-Type: 'application/json; charset=utf-8', 
        dataType: "json",
        success: function (response) {  

        },
        error: function (xhr, status, error) {

        }
    });
您已经在json
ul
中设置了
userlist
,因此只需将其直接指定给数据,而无需将其包装在
userlist
上,再次在ajax设置中设置contentType
content-Type:'application/json;charset=utf-8'

此外,在您的行动中,只需使用:

    public ActionResult AddUsers(List<User> userlist)
    {
     //no need to do JavaScriptSerializer 
public ActionResult AddUsers(List userlist)
{
//无需使用JavaScriptSerializer

更改您的操作以接受用户列表,model binder将处理其余部分,如下所示:

 [HttpPost]
        public ActionResult AddUsers(List<User> users)
        {
            //use the 
        }

将您的操作更改为接受用户列表,model binder将处理其余部分,如下所示:

 [HttpPost]
        public ActionResult AddUsers(List<User> users)
        {
            //use the 
        }

我不确定它是否/如何适合MVC,但.NET Web API已经为您提供了所有这些功能。您应该研究如何利用这些功能。我不确定它是否/如何适合MVC,但.NET Web API已经为您提供了所有这些功能。您应该研究如何利用这些功能。这实际上是我最初拥有的功能。不过,我又尝试了一次,当AddUsers被调用时,我的用户列表中的计数为0。顺便说一句,感谢您指出jquery中的错误。我已经纠正了这个错误。@Prabhu检查您的网络控制台(chrome)在浏览器中查看数据如何输出。同时添加
contentType:'application/json;charset=utf-8'
,请参阅我的update@Prabhu不客气。我没有注意到最初在您的代码中,后来我意识到您没有注意到…:)这实际上是我最初拥有的。我再次尝试了这一点,但是,我的userlis中的计数为0t当AddUsers被调用时。顺便说一句,感谢您指出jquery中的错误。我已经纠正了这个错误。@Prabhu检查您的网络控制台(chrome)在浏览器中查看数据如何输出。同时添加
contentType:'application/json;charset=utf-8'
,请参阅我的update@Prabhu不客气。我没有注意到最初在您的代码中,后来我意识到您错过了…:)谢谢。我也尝试了这个(类似于PSL的方法),但是当调用AddUsers时,我仍然看到0个项目的计数,即使ul中有一个项目。谢谢。我也尝试了这个方法(类似于PSL的方法),但是当调用AddUsers时,我仍然看到0个项目的计数,即使ul中有一个项目。