2014-11-13 60 views
4

我啓動了一個新的MVC 5 Web API項目,並且我想手動將對象編碼爲JSON以保存到數據庫。然而,似乎有在我的項目至少有四種不同類JSON序列化類已經可用:我需要哪個Json串行器?

  • System.Runtime.Serialization.Json.DataContractJsonSerializer
  • System.Web.Helpers.Json
  • Newtonsoft.Json.JsonConvert
  • Newtonsoft.Json.JsonSerializer

我排序 - 理解爲什麼這四個在概念上是不同的:一個來自WCF,兩個來自Newtonsoft;兩個是快速和骯髒的轉換器,另外兩個是可配置的串行器等。

我無法弄清楚的是,我應該使用哪一個。這4個選項之間是否有功能差異?如果我使用一個類來序列化,而另一個類在另一個應用程序中反序列化,會不會出現互操作性問題?

+0

不知道如何「會不會有互操作性問題」是一個基於觀點的問題,但我會擺脫「爲什麼有4個?」部分如果它讓你感覺更好:) –

回答

5

Newtonsoft串行器is faster than傳統DataContractJsonSerializer這就是爲什麼它通常包含在最新版本的MVC中。你提到的兩個Newtonsoft類型不是兩個序列化器,但我相信JsonConvert只是一個在內部使用JsonSerializer的實用程序類型。

所以在回答你的問題的最簡單的(和的一個)序列化最快的方式/反序列化JSON是這樣的:

// Serialize 
YourType instance = new YourType(); 
string json = JsonConvert.SerializeObject(instance); 

// Deserialize 
string json = "json_string"; 
YourType instance = JsonConvert.DeserializeObject<YourType>(json);