在 MonoTouch 中使用 Newtonsoft.Json
一直在項目中使用 Newtonsoft.Json 作為服務端的 Json 數據序列化工具, 現在使用 MonoTouch 做 iOS 開發, 自然會選擇用 Newtonsoft.Json 來反序列化服務端返回的 Json 數據。
Newtonsoft.Json 沒有提供對 MonoTouch 的版本, 因此需要從源代碼編譯 NJson 。
- 從 NJson 的 CodePlex 主頁下載最新版本的源代碼。
- 在源代碼的 Src\NewtonSoft.Json 目錄下, 有這樣的幾個項目文件:
- Newtonsoft.Json.Net20.csproj 對應 .Net 2.0 平臺下的 NJson ;
- Newtonsoft.Json.Net35.csproj 對應 .Net 3.5 平臺下的 NJson ;
- Newtonsoft.Json.Silverlight.csproj 對應 Silverlight 平臺下的 NJson ;
- Newtonsoft.Json.csproj 對應 .Net 4.0 平臺下的 NJson ;
- Newtonsoft.Json.WindowsPhone.csproj 對應 WP7 平臺下的 NJson;
- 在 Mac 系統下, 用 MonoDevelop 新建一個 MonoTouch 類庫項目, 項目名稱為 Newtonsoft.Json.MonoTouch, 然后關閉 MonoTouch ;
- 用文本編輯器打開 Newtonsoft.Json.MonoTouch.csproj 和 Newtonsoft.Json.Net35.csproj 兩個文件, 將 Newtonsoft.Json.Net35.csproj 文件中所有的 <Compile Include="*.cs" /> 復制到 Newtonsoft.Json.MonoTouch.csproj 文件中對應的位置, 然后保存 Newtonsoft.Json.MonoTouch.csproj 文件。
- 再用 MonoDevelop 打開 Newtonsoft.Json.MonoTouch.csproj 項目, 打開項目屬性對話框, 添加兩個編譯選項 WINDOWS_PHONE 和 SILVERLIGHT , 并將項目的輸出文件改為 Newtonsoft.Json.MonoTouch ;
- 在項目中添加下列類型的定義文件, 因為這些 Newtonsoft.Json 引用到這些類型, 但是 MonoTouch 下沒有這些類型:
- System.ComponentModel.AddingNewEventHandler
- System.ComponentModel.AddingNewEventArgs
- System.ComponentModel.PropertyChangingEventHandler
- System.ComponentModel.INotifyPropertyChanging
- System.ComponentModel.PropertyChangingEventArgs
- 如果不出什么意外的話, 現在可以在 MonoTouch 下編譯出 Newtonsoft.Json 了。
經過測試, 這樣編譯出的 NJson 在 MonoTouch 保留了NJon 絕大部分功能, 可以正常的反序列化服務端的 JSON 數據。
張志敏所有文章遵循創作共用版權協議,要求署名、非商業 、保持一致。在滿足創作共用版權協議的基礎上可以轉載,但請以超鏈接形式注明出處。
本博客已經遷移到 GitHub , 圍觀地址: https://beginor.github.io/
浙公網安備 33010602011771號