Asp.net-Mvc

使 JSON.NET 和 Serializable 屬性一起工作

  • January 3, 2014

我正在使用 JSON.NET,過去在 WEBAPI 對象反序列化過程中遇到了一些麻煩。在做了一些研究之後,我發現這個類被標記為 [Serializable]。當我刪除它時,反序列化就很好了。

可以在此處找到有關此的更多詳細資訊:

為什麼 Web API 不會反序列化,但 JSON.Net 會?

現在問題來了,我使用 binaryformatter 創建從這個對像類計算的雜湊值。但是 Binaryformatter 要求類必須被標記為 [Serializable]。

你能推薦我什麼方法讓這兩個東西同時工作嗎?

找到了解決方案:

首先,檢查您的 Newtonsoft.JSON 版本是否大於 4.5 或僅使用 NuGET 進行更新

根據版本說明,兩者可以從這個版本開始使用一些額外的註釋一起工作。

<http://james.newtonking.com/archive/2012/04/11/json-net-4-5-release-2-serializable-support-and-bug-fixes>

“現在,如果您正在序列化具有該屬性的類型並且不想要新行為,則可以使用 JsonObjectAttribute 在類型上覆蓋它”

[JsonObject]
[Serializable]
public class Foobar {

現在可以使用 JSON.NET,在我的例子中,可以使用帶有 [Serializable] 屬性的 binaryformatter。

引用自:https://stackoverflow.com/questions/20914080