我需要构建一个基于Java的JSON数据API,可以从移动设备访问:Android,Iphone ......我已经缩小到这些:
问题:
有人可以在iphone端json库上推荐吗? gson / jackson生成数据api的json输出,必须可以从iphone中获取,而不需要对json结构进行任何特殊调整
是否有任何java Collection类型我应该远离(在服务器端)以确保json可以直接转换为目标c对象?
还有其他陷阱吗?
注意:我知道PhoneGap,titanuim&一些等价物 - 但对它们不感兴趣。 Json本来是一种通用的格式,但我之前遇到过跨库问题 - 因此这种尝试可以从之前对该主题进行过实验的人那里了解
谢谢!
答案 0 :(得分:8)
我一直在iPhone App Project中使用RestKit库。 它是一个很好的框架,支持HTTP请求/响应处理(主要是REST)服务器,JSON / XML解析器,以帮助您进行数据转换和JSON< - >对象映射系统。
它可能会提供您的iPhone服务器通信需求(向服务器发出请求并从服务器接收JSON响应并将每个响应转换为objective-c对象)。
对于RestKit,它只对您的JSON文件的对象很重要。因此,只要您生成有效的JSON文件作为响应,就可以自由地使用服务器中的任何类或集合。
我花了一些时间学习如何在我的应用程序中正确使用RestKit。但是当你习惯它时,它肯定会节省你的时间,因为它隐藏了每次向服务器发出请求时解析JSON文件的复杂性。您正试图为您的应用程序选择一个好的JSON数据处理API。
RestKit的另一个好处是它的社区。它有一个GitHub,一个Google Groups和一个IRC频道。如果您打算将其用作框架,分配到其邮件列表绝对是一个好主意。
有一个很好的编码! ; P
答案 1 :(得分:2)
在swift中解析JSON的最好的库之一是EVReflection。 它使用CocoaPods提供了非常简单的安装,或者您只需下载它并添加到您的项目中即可。
使用非常简单,就像Android / Java中的GSON或Jackson一样。
使用Alamofire的例子:
class User : EVObject{
// EVReflection does not support optionals!
// So you have to not declare any optional vars
var name = ""
var surname = ""
}
Alamofire.request("Your API URL").responseString{
response in
let resString = response.result.value
// assuming that resString = "{'name' : 'john', 'surname' : 'Doe'}"
let user = User(json : resString)
}
答案 2 :(得分:1)
我个人一直在使用Stig的json-framework进行iOS开发,效果很好。你可以下载它here。
答案 3 :(得分:0)
OCMapper与GSON类似,它能够自动映射所有字段并且易于使用。它支持Objective C和Swift:
let request = Manager.sharedInstance.request(requestWithPath("example.com/users/5", method: .GET, parameters: nil))
request.responseObject(User.self) { request, response, user, error in
println(user.firstName)
}