我有一整套PHP脚本,可以与Android和iOS版本的移动应用程序交互。它们的工作原理都是一样的:在移动应用程序启动GET或POST后,PHP脚本通常会返回一个以短划线分隔的字符串。
例如。如果我想得到一个特定页面上的注释列表,PHP脚本会返回类似的内容
user1-comment1-user2-comment2
还有比这更好的方法吗?因为如果我想返回一个新的变量,例如
user1-comment1-newValue1-user2-comment2-newValue2
那么这将打破移动应用程序的所有当前版本。
为什么不序列化结果并用java进行解析?你也可以在PHP中使用json_encode
,并在你的android应用程序中解码。。。请参阅如何在Android 中解析JSON
您需要使用序列化程序。如果您的用户名中包含-
,则会遇到问题。序列化程序会为您处理此问题。当前收藏夹是JSON
,以前是XML
。
JSON在大多数web语言中都有出色的支持。
您可以将数据数组序列化为json字符串或消息包字符串。假设您的php数组是:
$a = array(
"user1" => "comment1",
"user2" => "comment2",
"user3" => "comment3"
);
这将在json:中转换为
{
"user1": "comment1",
"user2": "comment2",
"user3": "comment3"
}
这个json字符串可以很容易地在ios上转换为NSDictionaries(使用NSJSONSerialization)和在android上转换为JSONObjects(此处为教程)。
消息压缩字符串在结构上与上面的json字符串相似,但由于其更紧凑的性质,它不太容易被人读取。然而,Java和Objective-C都有库来帮助将消息打包的数据转换为本机对象。
使用JSON,可以使用名称/值对,因此参数的顺序或包含无关紧要。JSON还提供层次结构和有限的类型,例如数字与字符串。
JSON还允许您轻松地对字符进行转义,因此您可以拥有所需的任何值(即使带有反斜杠和引号)。