【发布时间】:2012-05-04 02:31:04
【问题描述】:
服务器端 - C# 或 java
客户端目标 C
我需要一种在 C#\java 中序列化对象并在 Objective C 中反序列化的方法。 我是 Objective C 的新手,我想知道从哪里可以获得有关此问题的信息。
谢谢。
【问题讨论】:
-
JSON 非常轻量级,应该很容易在这三种语言之间进行映射
标签: c# java objective-c serialization
服务器端 - C# 或 java
客户端目标 C
我需要一种在 C#\java 中序列化对象并在 Objective C 中反序列化的方法。 我是 Objective C 的新手,我想知道从哪里可以获得有关此问题的信息。
谢谢。
【问题讨论】:
标签: c# java objective-c serialization
除了显而易见的 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 客户端和服务器。
【讨论】:
JSON 用于相对直接的对象图 XML/REST 用于更复杂的对象图(数组/集合/嵌套数组等之间的区别)
【讨论】:
Sudzc。我正在使用它。从 i-os 应用调用 Web 服务非常容易。
您不必编写代码来序列化对象。
【讨论】:
JSON 可能是最好的选择,因为:
恕我直言,从可移植性的角度来看,序列化更复杂的对象并不是一个好主意,因为通常一种语言/平台无法有效地表达另一种语言/平台的概念。例如一旦开始声明序列化对象的“类型”或“类”,就会遇到语言之间对象模型不同的棘手问题。
【讨论】:
在 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 - 不过它仍处于测试阶段。
【讨论】: