如何通过唯一分隔符分隔从服务器获取的数据?

How separate data obtained from server by unique separator?

我想问一下有没有什么办法可以通过一些唯一的分隔符来拆分从服务器获取的数据。

举个例子:

我使用 AsyncTask 将数据发送到服务器,然后使用 echo 命令将这些数据发送回我的应用程序,并在 onPostExecute 中将这些数据拆分为所需的结果。

假设我想从服务器获取 姓名姓氏 的数据,因此服务器上的 echo 命令看起来像这个:echo $name."&".$surname;

然后在 onPostExecute 中,我将通过 "&""&" 分隔符拆分此数据,但是当用户写入我的分隔符 "&" 时会出现问题 我正在使用它进行拆分。

如何避免这个问题?

您需要对用于分隔传输内容中不同条目的字符进行转义 [1]。例如: My\&FirstName&MySecondName(在本例中 \ 用作转义字符)

但是,您不需要重新发明所有这些东西。您可以使用多种格式来传输数据:

  • json
  • xml
  • csv

[1] https://en.wikipedia.org/wiki/Escape_character

考虑使用 JSON。它是发送数据的救命稻草。 Android 使用 JSON 对象具有本机 JSON 支持。

Documentation

它本质上为放置在对象中的信息提供了一个格式化程序和解析器,然后可以通过关键字访问这些信息。

要写一个json:

public String writeJSON() {
  JSONObject object = new JSONObject();
  try {
    object.put("name", "John");
    object.put("surname", "Doe");
    return object.toString();
  } catch (JSONException e) {
    e.printStackTrace();
    return null;
  }
} 

这将 return 一个如下所示的字符串:

{"name":"John","surname":"Doe"}

阅读:

public void readJSON(String jsonString){
    try {
        JSONObject object = new JSONObject(jsonString);
        String name = object.getString("name");
        String surname = object.getString("surname");
    } catch (JSONException e){
        e.printStackTrace();
    }
}