Get information from the JSON package

When I receive a notification, I receive some of the data mentioned below

Bundle[{google.sent_time=1233212221545, msg={"message":"You received a chat message","type":"Match Maker","request_id":"501"}, chat={"owner":0,"request_id":"501"}, from=148566781839, google.message_id=0:148354545211779676%c3fc9c6ff9fd7ecd, android.support.content.wakelockid=3, collapse_key=do_not_collapse}] 

From this I want to get

  • message
  • Request_id
  • Owner
  • type

I'm trying to get like this

 String mes1 = extras.getString("chat"); 

I get these values

 {"owner":0,"request_id":"501"} 

Example: from the above, I want to get the owner and ask for an identifier on how to get these values.

This is my code:

 public class GCMIntentService extends IntentService { public static final int NOTIFICATION_ID = 1; private static final String TAG = "GcmIntentService"; UserLocalStore userLocalStore; private NotificationManager mNotificationManager; public GCMIntentService() { super("GcmIntentService"); } Intent notificationIntent; String type,token,requestid,notify_message; Context context; @Override protected void onHandleIntent(Intent intent) { userLocalStore = new UserLocalStore(this); Bundle extras = intent.getExtras(); GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this); // The getMessageType() intent parameter must be the intent you received // in your BroadcastReceiver. String messageType = gcm.getMessageType(intent); if (!extras.isEmpty()) { // has effect of unparcelling Bundle /* * Filter messages based on message type. Since it is likely that GCM * will be extended in the future with new message types, just ignore * any message types you're not interested in, or that you don't * recognize. */ if (GoogleCloudMessaging. MESSAGE_TYPE_SEND_ERROR.equals(messageType)) { sendNotification("Send error: " + extras.toString()); } else if (GoogleCloudMessaging. MESSAGE_TYPE_DELETED.equals(messageType)) { sendNotification("Deleted messages on server: " + extras.toString()); // If it a regular GCM message, do some work. } else if (GoogleCloudMessaging. MESSAGE_TYPE_MESSAGE.equals(messageType)) { // Post notification of received message. Notifyvalue msgvalues = new Notifyvalue(); Log.i(TAG, "Received: " + extras.toString()); String mes1 = extras.getString("chat"); type = extras.getString("type"); notify_message = extras.getString("msg"); Global.notification_type = type; if (authenticate() == true || userLocalStore.getFBLoggedInUser() == true) { if(Global.notification_type.equals("Match Maker")) { notificationIntent = new Intent(this, Chatactivity.class); } else { notificationIntent = new Intent(this, MainActivity.class); } } else { notificationIntent = new Intent(this, LoginActivity.class); } switch (type) { case "Rating": Global.notify_message = notify_message; requestid = extras.getString("request_id"); Global.Request_id = requestid; break; case "Request": Global.matchtoken = extras.getString("token"); requestid = extras.getString("request_id"); Global.Request_id = requestid; Global.notify_message = notify_message; break; case "Accept": Global.matchtoken = extras.getString("matchtoken"); requestid = extras.getString("request_id"); Global.Request_id = requestid; Global.notification_type = type; Global.notify_message = notify_message; break; case "Decline": Global.matchtoken = extras.getString("matchtoken"); requestid = extras.getString("request_id"); Global.Request_id = requestid; Global.notification_type = type; Global.notify_message = notify_message; break; case "Match Maker": //requestid = extras.getString("request_id"); //Global.Request_id = requestid; Global.notification_type = type; Global.notify_message = notify_message; break; case "Anonymous Rating": requestid = extras.getString("request_id"); Global.Request_id = requestid; Global.notification_type = type; Global.notify_message = notify_message; Global.feedback = extras.getString("feedback"); Global.ratestatus = extras.getString("ratestatus"); break; default: break; } Log.i(TAG, "message: " + Global.notify_message); sendNotification(extras.getString("message")); } } // Release the wake lock provided by the WakefulBroadcastReceiver. GcmBroadcastReceiver.completeWakefulIntent(intent); } 
+7
android android json
source share
3 answers

After using this method, you received a JSON value, so instead of entering a string, you should use JSONObject , as shown below:

 JSONObject object = new JSONObject(extras.getString("chat")); String str_owner = object.getString("owner"); String str_request_id = object.getString("request_id"); 

Hope you understand the concept of JSON .

+8
source share

You can create a hashmap from a json string using the Gson library

 private void testing(){ String s = "{\"owner\":0,\"request_id\":\"501\"}"; Gson gson = new Gson(); HashMap<String, String> map = (HashMap<String, String>) gson.fromJson(s, HashMap.class); System.out.println("testing values::"+map); } 
+4
source share

This is your chat object:

  public class Chat { @SerializedName("owner") @Expose private Integer owner; @SerializedName("request_id") @Expose private String requestId; public Integer getOwner() { return owner; } public void setOwner(Integer owner) { this.owner = owner; } public String getRequestId() { return requestId; } public void setRequestId(String requestId) { this.requestId = requestId; } } 

Then you just need to call

 Chat chat = Gson().fromJson(s, Chat.class); 

where s is your string "chat": "owner": 0, "request_id": "501" "

+3
source share

All Articles