0

受信した GCM メッセージから情報を抽出しようとしています。私のサーバーから送信されたメッセージは次のとおりです。

 "Message(data: {profile={"id":"214","name":"Dr Who","phone_number":"214"}})"

そして、電話で受け取ったメッセージ:

05-24 21:00:26.083: D/GCMIntentServiceReceived Message:(3929): Received Message: Message(data: {profile={"id":"214","name":"Dr Who","phone_number":"214"}})

これは、キーと値のペアを抽出するために使用したコードです。

@Override
    protected void onMessage(Context arg0, Intent intent) {

        String message = intent.getStringExtra("message");
        JsonParser parser = new JsonParser();
        JSONFingerprint fingerprintProfile = null;

        Log.d(TAG + "Received Message: ", "Received Message: " + message.toString());

        //System.out.println("PHONE " + intent.getExtras().getString("id")); This returns null


    }

この例では「id」フィールドを抽出しようとしていますが、常に NULL になります。誰にもアイデアはありますか?ありがとう!

4

1 に答える 1

1

「id」は、文字列メッセージにカプセル化された JSON の一部です。String メッセージを JSON オブジェクトに変換してから、「id」を取得する必要があります。

String[] parts = message.split("=");
try {
JSONObject object = new JSONObject(parts[1].substring(0, parts[1].length() - 2));
String id = object.getString("id");
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

上記のコードは一般的ではないこと注意してください。サーバーからクリーンな json-string を送信し、string-cutting ビットをスキップするようにしてください。

于 2013-05-24T21:00:09.053 に答える