0

我有一整套与 Android 和 iOS 版本的移动应用程序交互的 PHP 脚本。它们的工作方式相同:在移动应用程序启动 GET 或 POST 后,PHP 脚本通常会返回一个破折号分隔的字符串。

例如,如果我想获取特定页面上的评论列表,PHP 脚本将返回类似

user1-comment1-user2-comment2

还有比这更好的方法吗?因为如果我想返回一个新变量,例如

user1-comment1-newValue1-user2-comment2-newValue2

那么这将破坏移动应用程序的所有当前版本。

4

4 回答 4

1

You need to use a serializer. If you have a user name that contains a - you'll run into problems. Serializers take care of this for you. The current favorite is JSON, used to be XML.

JSON has excellent support in most web languages.

于 2013-07-02T16:50:54.553 回答
1

您可以将数据数组序列化为 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 都有库来帮助将消息打包数据转换为本机对象。

于 2013-07-02T16:52:57.707 回答
1

使用JSON,您可以使用名称/值对,因此参数的顺序或包含无关紧要。JSON 还提供层次结构和有限的类型,例如数字与字符串。

JSON 还允许您轻松地转义字符,因此您可以拥有任何您想要的值(即使使用反斜杠和引号。

于 2013-07-02T16:54:22.460 回答
1

为什么不序列化结果并在 java 中解析呢?您还可以json_encode在 PHP 中使用并在您的 android 应用程序中对其进行解码...请参阅如何在 Android 中解析 JSON

于 2013-07-02T16:46:41.303 回答