在 MonoTouch 中使用 Newtonsoft.Json

一直在项目中使用 Newtonsoft.Json 作为服务端的 Json 数据序列化工具, 现在使用 MonoTouch 做 iOS 开发, 自然会选择用 Newtonsoft.Json 来反序列化服务端返回的 Json 数据。

Newtonsoft.Json 没有提供对 MonoTouch 的版本, 因此需要从源代码编译 NJson 。

  1. 从 NJson 的 CodePlex 主页下载最新版本的源代码。
  2. 在源代码的 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;
  3. 在 Mac 系统下, 用 MonoDevelop 新建一个 MonoTouch 类库项目, 项目名称为 Newtonsoft.Json.MonoTouch, 然后关闭 MonoTouch ;
  4. 用文本编辑器打开 Newtonsoft.Json.MonoTouch.csproj 和 Newtonsoft.Json.Net35.csproj 两个文件, 将 Newtonsoft.Json.Net35.csproj 文件中所有的 <Compile Include="*.cs" /> 复制到 Newtonsoft.Json.MonoTouch.csproj  文件中对应的位置, 然后保存 Newtonsoft.Json.MonoTouch.csproj 文件。
  5. 再用 MonoDevelop 打开 Newtonsoft.Json.MonoTouch.csproj 项目, 打开项目属性对话框, 添加两个编译选项 WINDOWS_PHONE 和 SILVERLIGHT ,  并将项目的输出文件改为 Newtonsoft.Json.MonoTouch ;
  6. 在项目中添加下列类型的定义文件, 因为这些 Newtonsoft.Json 引用到这些类型, 但是 MonoTouch 下没有这些类型:
    • System.ComponentModel.AddingNewEventHandler
    • System.ComponentModel.AddingNewEventArgs
    • System.ComponentModel.PropertyChangingEventHandler
    • System.ComponentModel.INotifyPropertyChanging
    • System.ComponentModel.PropertyChangingEventArgs
    这些类型通过查阅 MSDN 或者用 ILSpy 很容易确定它们是怎么定义的;
  7. 如果不出什么意外的话, 现在可以在 MonoTouch 下编译出 Newtonsoft.Json 了。

经过测试, 这样编译出的 NJson 在 MonoTouch 保留了NJon 绝大部分功能, 可以正常的反序列化服务端的 JSON 数据。

张志敏所有文章遵循创作共用版权协议,要求署名、非商业 、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。

本博客已经迁移到 GitHub , 围观地址: http://beginor.github.io/

本文转自张志敏博客园博客,原文链接:http://www.cnblogs.com/beginor/archive/2011/09/25/2190545.html ,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值