vku*_*hov 6 c# json json.net asp.net-web-api json-deserialization
我正在尝试反序列化以下 json
{
"category": "mycategory",
"updated_date": "2011-11-10T03:07:43",
"description":"description",
"image": "someImageUrl",
"longitude": 100,
"latitude": 100,
"state": 1,
"user": "Mike",
"created_date": "2011-11-10T03:07:43",
"active": true,
"id": 1,
"resource_uri": "something"
}
Run Code Online (Sandbox Code Playgroud)
进入对象
public class Report
{
[JsonProperty(PropertyName = "category")]
public object Category { get; set; }
[JsonProperty(PropertyName = "updated_date")]
public string UpdatedDate { get; set; }
[JsonProperty(PropertyName = "description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "longitude")]
public double Longitude { get; set; }
[JsonProperty(PropertyName = "latitude")]
public double Latitude { get; set; }
[JsonProperty(PropertyName = "state")]
public int State { get; set; }
[JsonProperty(PropertyName = "user")]
public object User { get; set; }
[JsonProperty(PropertyName = "created_date")]
public string CreatedDate { get; set; }
[JsonProperty(PropertyName = "active")]
public bool Active { get; set; }
[JsonProperty(PropertyName = "id")]
public int Id { get; set; }
[JsonProperty(PropertyName = "resource_uri")]
public string ResourceURI { get; set; }
[JsonProperty(PropertyName = "image")]
public string Image { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我直接使用类似的东西
Report result = JsonConvert.DeserializeObject<Report>(data);
Run Code Online (Sandbox Code Playgroud)
它工作正常,所有属性都按应有的方式反序列化。
但是如果我尝试在 REST WEB API 中使用这个类,它开始表现得很奇怪。序列化工作正常吗?但反序列化失败:所有三个在其 PropertyName 中带有“_”的属性都不会反序列化。它们始终为空。据我了解,这是设置和配置中的内容,但我无法弄清楚究竟是什么。
编辑: JS代码
$.ajax(uri,
type:'PUT',
data: {
category: "someCategory",
updated_date: "2012-11-10T03:07:43",
description: "desc3",
image: "someImgaeUrl",
longitude: 10,
latitude: 20,
state: 1,
user: "Mike",
created_date: "2010-11-10T03:07:43",
active: false,
id: 0,
resource_uri: "somethring"
})
Run Code Online (Sandbox Code Playgroud)
C# 代码:
[Route("{id}")]
[HttpPut]
public HttpResponseMessage Report(int id, [FromBody]ReportModel report)
{ //Do Something}
Run Code Online (Sandbox Code Playgroud)