【问题标题】:An alternative to returning a delimited string?返回分隔字符串的替代方法?
【发布时间】:2013-07-02 16:42:31
【问题描述】:

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

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

user1-comment1-user2-comment2

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

user1-comment1-newValue1-user2-comment2-newValue2

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

【问题讨论】:

  • 使用标准格式,如json ...
  • 您能否将返回值设为字典的 json 编码字符串(即带有键和值的 php 数组)? android 和 ios 都支持 json 解码和编码。或者,如果你想节省几个字节的空间,你可以查看 messagepack。类似于 json 但更小:msgpack.org

标签: php android ios


【解决方案1】:

为什么不将结果序列化并在 java 中解析呢?您还可以在 PHP 中使用 json_encode 并在您的 android 应用程序中对其进行解码...参见 How to parse JSON in Android

【讨论】:

    【解决方案2】:

    您需要使用序列化程序。如果您的用户名包含-,您将遇到问题。序列化程序会为您解决这个问题。目前最喜欢的是JSON,以前是XML

    JSON 对大多数网络语言都有很好的支持。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2012-03-05
          • 1970-01-01
          • 2019-08-25
          • 2011-10-24
          • 2023-03-22
          • 2012-01-11
          • 2012-02-05
          • 2017-10-09
          • 1970-01-01
          相关资源
          最近更新 更多