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