.net的Newtonsoft JSON忽略了jsonproperty标签

sup*_*394 4 .net c# json json.net

出于某些非常恼人的原因,JsonProperty标签不能与Newtonsoft的Json for .net工具一起使用.在我的班上我有这些:

    [JsonProperty(PropertyName = "id")]
    public string ID { get; set; }
    [JsonProperty(PropertyName = "title")]
    public string Title { get; set; }
    [JsonProperty(PropertyName = "url")]
    public string Url { get; set; }
    [JsonProperty(PropertyName = "class")]
    public string EventClass { get; set; }
    [JsonProperty(PropertyName = "start")]
    public string Start { get; set; }
    [JsonProperty(PropertyName = "end")]
    public string End { get; set; }
Run Code Online (Sandbox Code Playgroud)

但我收到了这个

{"success":true,
 "result": [{
    "ID":"0",
    "Title":"Eid ul-Fitr",
    "Url":"<blah>",
    "EventClass":"event-info",
    "Start":"1406520000000",
    "End":"1406606400000"},
  etc.
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它忽略了我设置属性名称.我也尝试过使用[System.Runtime.Serialization.DataMember(Name="id")],但没有奏效.

这就是真正让我上街的原因.它昨天工作.我把它推回到昨晚我承诺的地方,它仍然无法正常工作.

有什么想法吗?

Bri*_*ers 17

你确定你实际上是在使用Json.Net进行序列化吗? Json(MyClass)是一个ASP.NET MVC方法.MVC使用JavaScriptSerializer不支持[JsonProperty]属性的类.要使用这些属性,您需要使用Json.Net方法进行序列化JsonConvert.SerializeObject(MyClass).如果你想从MVC控制器中返回那个JSON,那么你需要调用Content(jsonString, "application/json")而不是Json().