Newtonsoft JSON对于.NET来说忽略了JsonProperty标签。

7

由于某些非常恼人的原因,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; }

但是我收到了这个东西。
{"success":true,
 "result": [{
    "ID":"0",
    "Title":"Eid ul-Fitr",
    "Url":"<blah>",
    "EventClass":"event-info",
    "Start":"1406520000000",
    "End":"1406606400000"},
  etc.

你可以看到它忽略了我设置的属性名。我已经尝试使用[System.Runtime.Serialization.DataMember(Name="id")],但这也没有起作用。

真正让我烦恼的是,它昨天还能工作。我回滚到昨晚我提交时的版本,但它仍然无法工作。

有什么想法吗?


3
你可能想分享你的代码。 - mason
为什么当我进行序列化时,它会忽略我分配的 PropertyNames? - superAl1394
2
你是如何对这个类进行序列化的?请展示你的代码。 - Kirk Woll
1
我只是调用了 Json(MyClass) 并将其返回。 - superAl1394
1个回答

24

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接