对象序列化 – 从C#或java到Objective C

服务器端 – C#或java

客户端目标C.

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

谢谢。

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

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

[1] google声称与XML相比是20-100倍

[2]根据同一来源3-10次

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

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

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

Sudzc 。 我正在使用它。 从i-os app调用Webservice非常容易。

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

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

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

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

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

  • JSONKit
  • SBJson
  • TouchJson

可能是最突出的。

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

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

TouchJson甚至比SBJson慢一些。

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

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

JPJson – 它仍处于测试阶段。