返回分隔字符串的替代方法


An alternative to returning a delimited string?

我有一整套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还允许您轻松地对字符进行转义,因此您可以拥有所需的任何值(即使带有反斜杠和引号)。