Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
Jquery 在mvc webapi中反序列化Jsonobject_Jquery_Asp.net Mvc_Asp.net Web Api2 - Fatal编程技术网

Jquery 在mvc webapi中反序列化Jsonobject

Jquery 在mvc webapi中反序列化Jsonobject,jquery,asp.net-mvc,asp.net-web-api2,Jquery,Asp.net Mvc,Asp.net Web Api2,我试图将一个jSon对象发送到WebApicController,并将其反序列化为一个对象,但它只给了我一个零和空的空对象 虽然我更愿意做模型绑定,但这在Webappi中似乎不像在普通MVC控制器的AJAX调用中那样有效 Javascript(jQuery) WebApiController方法 public string PostStuff(JObject jsonObject) { Stuff stuff = JsonConvert.DeserializeObje

我试图将一个jSon对象发送到WebApicController,并将其反序列化为一个对象,但它只给了我一个零和空的空对象

虽然我更愿意做模型绑定,但这在Webappi中似乎不像在普通MVC控制器的AJAX调用中那样有效

Javascript(jQuery)

WebApiController方法

 public string PostStuff(JObject jsonObject)
    {
        Stuff stuff  = JsonConvert.DeserializeObject<Stuff>(jsonObject.ToString());
        return "thanks";

    }

    public class Stuff
    {
        public int siffra;
        public string text;     
    }
公共字符串PostStuff(JObject jsonObject)
{
Stuff Stuff=JsonConvert.DeserializeObject(jsonObject.ToString());
回答“谢谢”;
}
公共类的东西
{
公共int siffra;
公共字符串文本;
}
反序列化前的作业对象:{{\'siffra\':23,\'text\':\'Meddelande 安德拉·西丹神父!\“}”:“}”


代替JObject使用Stuff模型

public string PostStuff(Stuff stuff)
{
    return "thanks";

}
WebApi应该自动将其系列化

编辑

并确保ajax发送正确的json,如下所示:

{
    "siffra" : 23,
    "text" : "Meddelande från andra sidan!"
}
编辑2 试试这个电话

var data = {
                siffra : 23,
                text : "Meddelande från andra sidan!"
            }

            $.ajax({

                url: "api/Stuff/PostStuff",
                method: "POST",
                data: data,
                success: function (result) {
                    console.log("SUCESS: " + result);
                },
                error: function (data) {
                    console.log("error: " + data.responseText);
                }
            });
这是一个JSON对象,有一个名为
{\'siffra\':23,\'text\':\'Meddelande från andra sidan!\“}
的属性,其值为空字符串。这与
类型不同


它与引用的JS代码不匹配,因此您没有包含任何内容。

为什么不在操作的参数中接收
Stuff
模型?这样,ModelBinder将为您反序列化它,而无需手动执行。还请注意,您不能直接从WebApi操作返回字符串。这就是我尝试的。但它不起作用/我试过了。没用。这就是为什么我尝试了你在这篇文章中看到的东西。它不起作用,因为你发送了错误的对象集。让舒尔在你的帖子正文中看到以下json:{“siffra”:23,“text:“Meddelande från andra sidan!”}@Lautaro不要在数据中使用json字符串化。只需发送数据。啊!在我发现stringify之前我就是这么做的。好的,我试试看。谢谢可能需要在请求中添加内容类型:application/json。但是我不确定。我已经包括了所有的东西。检查jQuery。数据:Json.serialize…我已经解决了。ajax请求需要contentType:Json才能正确格式化。然后像这样进行反序列化。
var data = {
                siffra : 23,
                text : "Meddelande från andra sidan!"
            }

            $.ajax({

                url: "api/Stuff/PostStuff",
                method: "POST",
                data: data,
                success: function (result) {
                    console.log("SUCESS: " + result);
                },
                error: function (data) {
                    console.log("error: " + data.responseText);
                }
            });
 {"{\"siffra\":23,\"text\":\"Meddelande från andra sidan!\"}": ""}