Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Json.NET在反序列化时不使用JsonProperty_C#_Json_Asp.net Web Api_Json.net_Json Deserialization - Fatal编程技术网

C# Json.NET在反序列化时不使用JsonProperty

C# Json.NET在反序列化时不使用JsonProperty,c#,json,asp.net-web-api,json.net,json-deserialization,C#,Json,Asp.net Web Api,Json.net,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-1

我正在尝试反序列化以下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"
}
进入物体

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; }
    }
如果我直接使用像

Report result = JsonConvert.DeserializeObject<Report>(data);
C#代码:


这可能是像虫子一样棘手的事情。你可能会收到更好的答复。作为一个实验,删除
JsonProperty
属性,并根据JSON对象命名字段,如果这样做有效,则该属性可能无法正确处理。请将您要发布的代码发布到Rest Web API,并使用相应的Web API方法来处理它。如果名称相等(加减字母大小写),则效果良好。添加了代码尝试更改您的C#类,因为我相信连字符被解析为下划线。我猜这是一个bug,两年后仍然是一个问题。在我的例子中,我需要使用带空格的JSON属性,并映射到显然不能有空格的C#属性名。
$.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"
})
[Route("{id}")]
[HttpPut]
public HttpResponseMessage Report(int id, [FromBody]ReportModel report)
{ //Do Something}