Jquery 在mvc webapi中反序列化Jsonobject
我试图将一个jSon对象发送到WebApicController,并将其反序列化为一个对象,但它只给了我一个零和空的空对象 虽然我更愿意做模型绑定,但这在Webappi中似乎不像在普通MVC控制器的AJAX调用中那样有效 Javascript(jQuery) WebApiController方法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
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!\"}": ""}