与Newtonsoft.Json反序列化
本文关键字:反序列化 Json Newtonsoft | 更新日期: 2023-09-27 18:29:14
我有我的控制器,它可以发送json对象并再次接收同一对象。我的问题是AjaxSaveFoo创建了一个Foo对象,但我总是得到一个空对象。如何创建反序列化?
/// <summary>
/// Returns a foo
/// </summary>
/// <returns></returns>
public JsonNetResult AjaxLoadFoo()
{
return new JsonNetResult
{
Data = new Foo()
};
}
/// <summary>
/// Saves a foo
/// </summary>
/// <returns></returns>
public JsonNetResult AjaxSaveFoo(Foo foo) //who tries to deserialize this!!, its always empty
{
return new JsonNetResult
{
Data = foo
};
}
我的客户。。
$.ajax({
type: "POST",
url: "AjaxSaveFoo",
data: JSON.stringify(this._FooObj),
success: this.saveSucces,
dataType: "json",
contentType: "application/json; charset=utf-8",
error: this.saveFailure
});
Foo当它被送下来的时候
{
"CustomerNumber": 2,
"CustomerStatus": "1"
}
Foo提交(POST)时
{"CustomerNumber":2,"CustomerStatus":"1"}
您传递的对象没有正确转换为Foo
对象。
尝试更改签名以输入字符串,然后尝试反序列化:
public JsonNetResult AjaxSaveFoo(string json)
{
var foo = JsonConvert.DeserializeObject<Foo>(json);
return new JsonNetResult
{
Data = foo
};
}
我发现了错误。。。。
url应该是AjaxSaveFoo/,而不是AjaxSaveFoo。这给了我来自服务器的301(添加了/),但也导致客户端使用GET,因此没有填充数据叹息