在mvc webapi中反序列化Jsonobject

时间:2018-01-12 14:05:27

标签: jquery asp.net-mvc asp.net-web-api2

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

我更喜欢做模型绑定但是这似乎不适用于Webappi,就像AJAX调用普通的MVC控制器一样吗?

Javascript(jQuery)

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

                $.ajax({

                    url: "api/Stuff/PostStuff",
                    method: "POST",
                    data: JSON.stringify(data),
                    success: function (result) {
                        console.log("SUCESS: " + result);
                    },
                    error: function (data) {
                        console.log("error: " + data.responseText);
                    }
                });

WebApiController方法

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

    }

    public class Stuff
    {
        public int siffra;
        public string text;     
    }
  

反序列化前的JObject:{“{\”siffra \“:23,\”text \“:\”Meddelande   frånandrasidan!\“}”:“”}

2 个答案:

答案 0 :(得分:1)

JObject的Insted使用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);
                }
            });

答案 1 :(得分:0)

 {"{\"siffra\":23,\"text\":\"Meddelande från andra sidan!\"}": ""}

这是一个JSON对象,其中包含一个名为{\"siffra\":23,\"text\":\"Meddelande från andra sidan!\"}的属性,其值为空字符串。这与Stuff类型完全不同。

哪个与引用的JS代码不匹配,因此您没有包含某些内容。