对 Web API 的 PUT 请求的 JSON 反序列化问题
本文关键字:JSON 反序列化 问题 请求 PUT Web API | 更新日期: 2023-09-27 18:33:33
>我正在尝试使用 WebAPI 对资源执行更新
我有一个执行操作的控制器
管理员控制器类
[HttpPut]
[Route("newprofile")]
public HttpResponseMessage Update(AdminAction adminAction)
{
if (_adminManager.ApproveUser(adminAction))
{
return Request.CreateResponse(HttpStatusCode.OK);
}
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
资源
public class AdminAction : BaseResource
{
public bool Approve { get; set; }
public bool Delete { get; set; }
public string EmailId { get; set; }
public string Language { get; set; }
[IgnoreDataMember]
public Language eLanguage { get; set; }
}
阿贾克斯代码
activate: function (e) {
var email = this.model.get('Email');
var adminAction = {
"Approve": true,
"Delete": false,
"EmailId": email,
"Language": $("#ddlMotherTongue").val()
}
var url = kf.Settings.apiUrl() + '/admin/newprofile';
$.ajax(url, {
type: "put",
data: JSON.stringify(adminAction),
success: function (data, textStatus, jqXHR) {
alert('Profile approved');
$("table tr td").filter(function() {
return $(this).text().trim() == email;
}).parent('tr').css({'border': '1px solid green', 'border-left': 'none', 'border-right': 'none','color':'green'});
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 400) {
var errorJson = jQuery.parseJSON(jqXHR.responseText);
if (errorJson.hasOwnProperty("Errors")) {
switch (errorJson.Errors[0].ErrorType) {
}
}
}
},
async: true
});
return false;
},
琴师
网址: http://lapi.x.com/admin/newprofile
请求标头
Accept: application/json
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Authorization: Token dd39c761-3060-498b-9393-92b12cace238
Connection: keep-alive
Content-Length: 76
Content-Type: application/json
Host: lapi.x.com
Origin: http://x.com
Referer: http://x.com/
身体
{"Approve":true,"Delete":false,"EmailId":"ttt@gnote.com","Language":"Hindi"}
当我执行 PUT 操作(提琴手和代码)时,在 put 方法(代码隐藏)中收到的管理对象将对象中的所有类型设置为默认值,即传递的值没有反序列化。
关于我可以对 JSON 做什么的任何想法,服务器不喜欢它?
因为您使用的是DataContractJsonSerializer
所以应该添加相关属性。
类属性:
[DataContract]
方法属性:
[DataMember]