2013-02-04 72 views
1

我正在尋找一個支持JSON(de-)序列化的框架,它的低級別或高度可定製。哪個框架最適合支持高度可定製的JSON序列化?

我必須序列化的許多類型的對象模型必須以特定方式創建,而不是所有信息都可用於通用分析器。 目前我使用JSON.Net與JSONConverters的大多數類型,但類型的實例是棘手的,不是很乾淨(私人構造函數與JSONConstructor屬性+後建設初始化方法,提供剩餘的施工數據)。

總之,一個OR映射器是不理想的我,因爲:

  • 對象是不是波蘇斯(沒有默認構造函數,而不是在解析器提供的所有構造信息)
  • 某些類型的可遠表示比OR-Mapper創建的更加緊湊和可讀(例如,值類型對可以存儲爲{"theType" : "theValue"}而不是{"type": "theType", "value" : "theValue"}--這裏的區別主要是可讀性)
  • 對域模型的更改很難支持;我需要一個老解析器老波蘇斯解析遺留數據,轉換那些curernt波蘇斯並與當前解析器序列化(至少我認爲這就是它如何與OR映射器完成)

當我寫的所有JSONConverters我意識到,提供低級別序列化方法(WriteProperty,ReadValue,WriteObject)的框架對我來說就足夠了,並且還提供了創建更緊湊,可讀JSON的靈活性,並允許我爲不同版本的域創建遷移器模型幾乎沒有開銷(與需要傳統域對象進行ORM解析相比)。

是否有任何框架支持低級別/高度自定義的JSON解析? 我寧願不自己編寫這樣的解析器,即使我認爲它不會那麼困難,因爲JSON是一種簡單的格式(儘管日期解析等可能會令人頭疼)。

JSON.Net的JsonReader/Writer類型基本上是我正在尋找的東西,但我不確定以這種方式使用這些類型是否是一個好主意,如果還有其他庫在提供此功能方面做得更好 - JSON.Net畢竟打算用作ORM解析器。

回答

0

要關閉這個問題,我會自己發表一個答案,雖然我會接受Soundararajan的答案,如果他有機會完成他的計劃並提供他的實施。

我最終使用了JSON.Net的JsonReader/Writer類型。

一旦/如果性能成爲問題,我將切換到protobuf-net,其中supports SAX-like parsing

如果有人知道一個更好的庫來實現高度可定製的/類SAX的JSON序列化,隨時留下一個答案,我仍然會看這個問題。

1

我們使用這個java library進行極其可配置的JSON。儘管我們將它移植到了C#中。 :)

+0

這就是我正在尋找的,它在Java中太糟糕了。你有沒有發佈你的C#端口的傑克遜或知道類似的C#解析器? – enzi

+0

很抱歉,我的組織不會允許我這樣做。但我現在有計劃,但不是太早:(:(。 – Soundararajan