如何在FCM数据有效负载中迭代数组?

时间:2017-11-17 13:00:40

标签: android firebase-cloud-messaging

如果data有效负载包含数组,如何获取每个项目?如果它不是数组,我可以通过override fun onMessageReceived(remoteMessage: RemoteMessage?)检索remoteMessage.data.get("item")中的值,但在items上执行相同操作会返回原始JSON字符串。

{
  "to": "/topics/stack",
  "data": {
    "items": [
      {
        "key": "key1",
        "title": "Hello world"
      },
      {
        "key": "key2",
        "title": "Hello world 2"
      }
    ]
  }
}

2 个答案:

答案 0 :(得分:0)

class ItemsModel{
   private String key;
   private String title;
   //getters///
   //setters///
}    


String dataMessagePayLoad = remoteMessage.getData();
    if(dataMessagePayLoad!=null){
      private Gson gson = new Gson();
      List<ItemsModel> response = gson.fromJson(dataMessagePayLoad , new TypeToken<List<ItemsModel>>() {
                                }.getType());
    }

尝试使用这个,我使用Gson库将json转换为列表

答案 1 :(得分:0)

您必须将字符串转换为JSON

String itmes=remoteMessage.data.get("data");

JSONObject jsonObject = new JSONObject(items);
JSONArray itemsArray=jsonObject.optJSONArray("items");

您可以在itemsArray中添加数组项。