【问题标题】:Android GCM: Can we get data as a complete JSON structure?Android GCM:我们可以将数据作为完整的 JSON 结构获取吗?
【发布时间】:2013-02-13 10:54:31
【问题描述】:

我正在向 Google GCM 服务器https://android.googleapis.com/gcm/send 发送消息 (POST),以便向已注册的 Android 设备发送推送通知。 POST 正文如下所示:

{
    "registration_ids" : [android_registration_id],
    "data" : {
        "message" : "Hello World!",
        "update" : "You've got a new update",
        "info" : "You've got new information updates too!"
    }
}

假设我不知道在“数据”字段中发送给我的所有键值对(gcm 注册的 android 应用程序)并且我想枚举并打印它们,我可以提取“数据”中的字段吗" 作为 JSON 结构?

例如在上面的示例中,我需要以下内容作为 JSON 对象:

{
    "message" : "Hello World!",
    "update" : "You've got a new update",
    "info" : "You've got new information updates too!"
}

【问题讨论】:

  • 据我所知,GCM 正在发送封装在 Bundle 对象中的数据,但您可以尝试发送键值结构化数据并作为值放置您的 json。不确定它是否能解决问题。
  • 我可以发送整个 JSON 作为一个值来假设“json_structure”,但我想让它完全独立于用户,无论用户通过什么,我都会制作一个 JSON 结构并显示键值对。
  • 用户在整个游戏中扮演什么角色?您将接受响应并将其显示给用户。
  • 对不起,我换个说法,服务器传递任意数据,用户必须查看该数据。我只需要知道是否有办法将整个“数据”值转储到 JSON 结构中,我将遍历键值对并显示它们。
  • 您需要向用户展示整个 json 字符串的单个部分,正如我所理解的,就像您的示例中的 Hello World 一样。因此,我从服务器端知道,如果您通过 GCM 发送 json 字符串,android 设备会将其作为 Bundle 接收,您必须知道获取值的密钥。您可以尝试在 json 中发送一个 json 作为值,但不确定它是否会起作用,但这是我唯一的想法,以防您不知道密钥。

标签: android google-cloud-messaging


【解决方案1】:
Bundle data = intent.getExtras();
Iterator<String> it = data.keySet().iterator();
String key;
String value;
while(it.hasNext()) {
    key = it.next();
    value = data.getString(key);
}

试试这个。使用 key 和 value 可以构造初始 json。

【讨论】:

    【解决方案2】:
    JSONArray array = new JSONArray(jsonBodyOfTheResponse);
    
    for (int i = 0; i < array.length(); i++) {
        JSONObject row = array.getJSONObject(i);
        .
        .
        . }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      相关资源
      最近更新 更多