在android中收到的FCM数据有效负载不是json格式

时间:2018-04-11 04:36:45

标签: android firebase firebase-cloud-messaging

我从firebase获取的数据有效负载不是json格式,而是按以下格式获取自定义键值对:

Data Payload:{image=https://www.xxxx.xxx/get-profile-picture, message=This is a test message., senderName=Mathew John}

我必须使用Json解析来解析数据以进行进一步处理。 这是我的代码:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    if (remoteMessage.getData().size() > 0) {
        Log.e(TAG, "Data Payload: " + remoteMessage.getData().toString());
        try {
            JSONObject json = new JSONObject(remoteMessage.getData().toString());
            String title = remoteMessage.getData().get("senderName");
            System.out.println("raja" + title);
            String msg = remoteMessage.getData().get("message");
            System.out.println("raja" + msg);
            sendMessage(msg,title);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:12)

  

我从firebase获取的数据有效负载不是json格式

Yes ,其行为符合预期。

因为数据有效负载包含custom key-value pairs而不是JSON格式

  

我必须使用Json解析来解析数据以进行进一步处理。

您需要使用Map<String, String>将数据有效负载转换为JSONObject

检查以下示例

示例代码

Map<String, String> params = remoteMessage.getData();
JSONObject object = new JSONObject(params);
Log.e("JSON_OBJECT", object.toString());