我有一个iPhone应用程序使用ASIHTTPRequest将数据发布到php文件,然后使用sql相应地更新数据库。
让我烦恼的是我一直在阅读我应该用JSON格式编码我发布的数据。有人可以向我解释这一点吗?我为什么要以JSON格式编码?有什么好处,需要......
编辑:
以下是我发布数据的方式:
-(void) postToDB:(NSString*) msg{
NSString *myphp = @"http://localhost:8888/databases/test.php";
NSURL *url = [NSURL URLWithString:myphp];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:msg forKey:@"message"];
[request setDelegate:self];
[request startAsynchronous];
}
答案 0 :(得分:4)
将数据封装在JSON结构中有助于与服务器创建结构化通信协议。根据您的需要不进行此操作,例如,请查看JSON-RPC的规范。这允许您拥有一个完全定义的协议来交换数据,其中方法总是以相同的方式传递,错误总是以相同的方式返回。
严格来说,使用JSON,JSON-RPC,SOAP或任何其他“信封”绝不是强制性的。这只是通过电线标准化通信的一种很好的做法。
另外,我不知道setPostValue:ForKey:
是否会在需要时自动转义字符,但想象一下你是在向http://whatever/get.php?nickname=nick&with?special@chars&password=qzerty发送GET。
这里发生了什么?您的PHP脚本将无法正确解析“昵称”和“密码”字段。
在JSON框架的帮助下将数据封装在JSON中(您可以在一行代码中完美地将NSString字典转换为JSON结构)有助于防止出现这种情况。
答案 1 :(得分:0)
我认为将数据库与您的app分开是男子气概。如果您使用JSON而不是直接SQL,它可以让您切换数据库并创建新视图。例如,你厌倦了MYSQL,并想尝试像Mongodb这样花哨的新NOSQL数据库,而不是重写你的整个iPhone应用程序,你只需要重写一个PHP脚本。另一个例子是,如果你的应用程序很好,你想要创建和Android版本,或者一个网络版本,JSON使这更容易,只需要安装一个JSON库,然后离开你去!