2009年4月10日 星期五

好用的JSON Library:Json.NET

JSON是一種純文字資料格式,用於Web服務,詳細說明可以參考維基百科。JSON雖然簡潔,但要用程式去解析,還是要花費相當的力氣,幸好在.NET平台上,有Json.NET這樣的免費Library可以使用。




Json.NET目前出到3.0版,支援.NET 3.5,同時也有實作LINQ功能,這意味著你可以用LINQ做查詢,著實方便不少。下面是網站上所列出的功能:

  • LINQ to JSON
  • Lightning fast JsonReader and JsonWriter
  • The JsonSerializer for quickly converting your .NET objects to JSON and back again
  • Json.NET can optionally produce well formatted, indented JSON for debugging or display
  • Attributes like JsonIgnore and JsonProperty can be added to a class to customize how a class is serialized
  • Ability to convert JSON to and from XML

這邊簡單翻譯一下,也就是Json.NET提供:

  • 前面提到的LINQ查詢
  • 提供讀取、寫入json的功能
  • 可以讓.NET物件序列化為json格式,同時能轉換回.NET物件
  • 定義你的類別如何轉換為json格式
  • 支援XML功能

下面的例子說明如何使用Json.NET

首先示範如何將物件轉為JSON(以ASP.NET專案做說明)。

撰寫Book類別,等會要將它轉為JSON:

2009-04-10_095226

在類別宣告的上方,必須加入JsonObject()這一行,表示它是可以序列化為JsonObject,而MemberSerialization.OptIn的意思則是程式設計師自己必須指定哪些屬性要序列化,哪些不用。如果要序列化全部的屬性,可以改為MemberSerialization.OptOut。

 

接著示範如何序列化。

2009-04-10_100030

JsonSerializer類別提供將物件轉為JSON的功能,但是還需要一個JsonWriter才能輸出結果,而宣告JsonWriter需要一個StringWriter(或是TextWriter)。上述程式碼的執行結果為:

2009-04-10_100501

接下來再加入兩行程式碼:

2009-04-10_100544

這個是將前面轉出來的JSON字串再轉回物件,執行結果為:

2009-04-10_100715

 

在Web服務愈來愈流行的情況下,程式設計師多少都會碰到這方面的東西,為了免去繁雜的Coding,學習使用Json.NET這類的Library絕對有其必要。

 

參考資料

Json.NET

Json.NET Documentation

維基百科:JSON

2 則留言:

  1. 菸酒生,你的文章生產速率還真是快啊@@!

    回覆刪除
  2. 那是因為剛好有題材可以寫啊,不過下一篇就會隔久一點了...

    回覆刪除

 

我們搬家了

新部落格在http://b-plurkers.com/