在mvc webapi中反序列化Jsonobject

Deserializing Jsonobject in mvc webapi

我试图将一个 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 before deserialization: {"{\"siffra\":23,\"text\":\"Meddelande från andra sidan!\"}": ""}

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);
                }
            });
 {"{\"siffra\":23,\"text\":\"Meddelande från andra sidan!\"}": ""}

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

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