2008-12-24 23 views
18

我需要序列化/反序列化一些對象進/出字符串,並將它們作爲不透明數據傳輸。我可以使用XmlSerializer來完成它,但生成的字符串看起來笨拙而且很長。那麼,.NET中是否有簡潔的Serializer?.NET BCL中是否有任何現成的Json序列化助手類?

我想到的第一件事情是.NET可能有JSON串行器,但我找不到它。 .NET中是否有任何現成的方法將對象轉換爲簡潔字符串?

回答

26

有兩個;

在傳統的方式

  • JavaScriptSerializer,它們不與每個-其它100%兼容,特別是重新DateTime; DCJS使用(IIRC)一個文字字符串; JSS使用new - 並且都不能正確讀取其他人。當然,如果文本如果不透明,你也可以使用任何簡潔的二進制串行器,並且只需base-64編碼;例如,protobuf-net非常簡潔。但是使用JSON可以最大限度地減少每端所需的外部代碼,所以很可能是您最好的選擇。

  • +0

    根據MSDN, JavaScriptSerializer位於.NET 3.5中的System.Web.Extensions.dll中,不一定是.NET 3.5 SP1。 – 2008-12-25 02:07:21

    0

    只需使用自己的API ..它很容易創建json的..但是你也可以使用JSON庫,例如JSON.NET ..

    編碼快樂

    0

    JsonFx.NET有一個開放源代碼的串行允許序列化到/強類型的類可能是你正在尋找。您可以控制日期序列化的方式並覆蓋序列化的很多方面。它甚至通過支持匿名對象的序列化與Linq良好地交互。這個API就像.NET XML序列化一樣工作。

    4

    我有一個非常快開源JsonSerializer可用,可以系列化任何POCO或DataContract類型,包括接口匿名和後期綁定的類型等

    基本示例

    var customer = new Customer { Name="Joe Bloggs", Age=31 }; 
    var json = JsonSerializer.SerializeToString(customer); 
    var fromJson = JsonSerializer.DeserializeFromString<Customer>(json); 
    
    相關問題