4

服务器端 - C# 或 java

客户端目标 C

我需要一种在 C#\java 中序列化对象并在 Objective C 中反序列化它的方法。我是 Objective C 的新手,我想知道在哪里可以获得有关此问题的信息。

谢谢。

4

5 回答 5

5

除了显而易见的 JSON/XML 解决方案之外,protobuf也可能很有趣。它有 Java//c++/python 后端,第 3 方也为 C# 和 Objective-c 创建了后端(虽然从未使用过那个)。

主要优点是解析速度更快[1],更小[2],因为它是一种二进制格式,而且版本控制从一开始就是一个重要因素。

[1] google 声称是 XML 的 20-100 倍

[2] 3-10次同源

另一种类似于 protobufs 的技术是Apache Thrift

Apache Thrift 是一个用于可扩展的跨语言服务开发的软件框架。Apache Thrift 允许您在一个简单的定义文件中定义数据类型和服务接口。将该文件作为输入,编译器生成代码,用于轻松构建跨编程语言无缝通信的 RPC 客户端和服务器。

于 2012-05-02T23:31:14.320 回答
1

JSON 用于相对直接的对象图 XML/REST 用于更复杂的对象图(数组/集合/嵌套数组等之间的区别)

于 2012-05-02T23:17:55.877 回答
0

在 iOS 上,有几个带有 Objective-C API 的 JSON 框架和库:

可能是最突出的。

JSONKit快速简单,但只能解析 JSON 文本的连续部分。这意味着,您需要将下载的数据保存到临时文件中,或者您需要将所有下载的 JSON 文本保存到 NSMutableData 对象(保存在内存中)。只有在完全下载 JSON 文本后,您才能开始解析。

SBJson使用起来更灵活。它提供了一个额外的“SAX 风格”接口,可以解析部分输入,并且每个“输入”可以解析多个 JSON 文档(例如每个网络连接多个 JSON 文档)。当您想要连接到“流式 API”(例如 Twitter 流式 API)时,这非常方便,每个连接可以到达许多 JSON 文档。缺点是,它比 JSONKit 慢得多。

TouchJson甚至比 SBJson 还要慢一些。

不过,我个人的偏好是其他的。它比 JSONKit 快(在 arm 上快 20%),具有额外的 SAX 样式 API,可以处理“流式 API”,可以同时下载和解析,可以处理非常大的 JSON 字符串而不会严重影响内存占用,同时它是特别容易与 NSURLConnection 一起使用。(嗯,我可能有偏见,因为我是作者)。

你可以看看JPJson (Apache License v2):

JPJson - 不过它仍处于测试阶段。

于 2012-05-03T18:22:14.163 回答
0

JSON可能是最好的选择,因为:

  • 使用简单
  • 它是人类可读的
  • 它是基于数据的,而不是依赖于任何更复杂的对象模型
  • 您将能够找到适合大多数语言的导入/导出库。

恕我直言,从可移植性的角度来看,序列化更复杂的对象并不是一个好主意,因为通常一种语言/平台没有有效的方法来表达另一种语言/平台的概念。例如,一旦您开始声明序列化对象的“类型”或“类”,您就会遇到语言之间不同对象模型的棘手问题。

于 2012-05-03T04:59:12.317 回答
0

苏兹克。我正在使用它。从 i-os 应用程序调用 Web 服务非常容易。

您不必编写代码来序列化对象。

于 2012-05-03T01:48:02.707 回答