由于ASIHttpRequest的作者已经明确不再维护这个库了,所以我使用了较为轻量的MKNetworkKit库。
服务端,PHP自带了json的序列化和反序列化函数:json_encode和json_decode。而对于客户端,我采用了TouchJSON这个开源库。
BTW,GitHub已经是新一代的、主流的开源文化和产业了,上面提到的开源库,都来自GitHub。 :)
首先,客户端利用MKNetworkKit库向服务端发个请求:
MKNetworkOperation *op = [self operationWithPath:path params:(NSMutableDictionary *)params httpMethod:@"POST"];
服务端收到请求后,构造返回参数,然后回馈给客户端:
$arr = array();
$arr['code'] = 200;
$arr['msg'] = '你好,中文';
$jsonData = json_encode($arr);
echo $jsonData;
这里会遇到第一个问题,就是msg字段对应的中文变成null了。
Google一下,得知是json要求utf-8编码,现有简单解决方案是转换下编码:
function gbk2utf8($data) {
if (is_array($data)) {
return array_map('gbk2utf8', $data);
}
return iconv('gbk', 'utf-8', $data);
}
客户端接着可以处理服务端返回的数据,利用TouchJSON进行反序列化:
NSString *jsonStr = [operation responseString];
NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSDictionary *info = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
if (info) {
DLog(@"%@\n", info);
NSString *str = [info objectForKey:@"msg"];
DLog(@"%@, %@\n", str, [[info objectForKey:@"msg"] class]);
}
同样地,客户端也可以先封装json数据,再传递给服务端。
PHP利用json_decode反序列化时,需要注意的是默认返回的是一个PHP对象,如果需要转换数组,则需要指定$assoc参数为TRUE,可参见:http://php.net/manual/en/function.json-decode.php 。
分享到:
相关推荐
Objective-C语言将决定尽可能的从编译和链接时推迟到运行时。只要有可能,Objective-C总是使用...本文档将具体介绍NSObject类以及Objective-C程序是如何和运行时系统交互的。特别地,本文档还给出来怎样在运行时动态地加
Objective-C语言的许多决策可以在编译和运行时执行。只要有可能,它是动态的。这意味着Objective-C语言不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。Runtime系统是一种用于Objective-C语言的操作系统...
读者在阅读《objective-c程序设计》后,可以掌握objective-c语言的基本内容,并进行实际的iphone/ipad和mac应用开发。《objective-c程序设计》共分成11章。前6章讲述objective-c语言,包括数据类型、运算符、表达式...
通过学习Objective-C的基本语法、类和对象、控制流程和方法等内容,你将能够编写简单的Objective-C程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够开发各种类型的应用程序,并为用户提供出色的体验。祝你在...
用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式。.zip用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式。.zip用Objective-C语言实现了各种设计...
《Objective-C 程序设计(第4版)》作者假设读者没有面向对象程序语言或者C语言(Objective-C基础)编程经验,因此,初学者和有经验的程序员都可以使用这本《Objective-C 程序设计(第4版)》学习Objective-C。...
C语言主要知识点巩固(学习Objective-C 的前提),PPT格式。
Objective-C 是一种通用、面向对象的编程语言,广泛应用于 macOS 和 iOS 等苹果平台的开发中。它是 C 语言的超集,结合了 Smalltalk 式的消息传递机制和 C++ 的特性。Objective-C 是苹果公司采用的主要编程语言之一...
Objective-C 基础教程,从入门到精通 Objective-C 基础教程,从入门到精通,是你学习 Objective-C 的经典之作。
Objective-C是创建Mac OS应用和iPhone应用的主要语言,优雅的面向对象编程环境与C语言特性珠联璧合,造就了它的不俗表现。 本书全面而系统地讲述Objective-C语言的基础知识和面向对象编程的重要概念,结合实例...
本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。...
在windows系统下搭建Objective-C开发环境,由于公司要做iphone开发,个人学习objc(Objective-C)语法,所以在windows7下搭建了一个objc开发环境,现把自己整理的帮助文档拿来与大家分享,希望能对大家有所帮助。...
elcome to Learn Objective- C on the Mac! This book is designed to teach you the basics of the Objective- C language. Objective- C is a superset of C and is the language used by many (if not most) ...
Objective-C高级编程 iOS与OS X多线程和内存管理.pdf
这是一个基于Objective-C语言的基础案例集 旨在用于给初学者快速了解Objective-C语言的语法 .zip
这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语法。.zip
本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。...