마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

GCM 파싱 오류 질문드립니다.

0 추천

안녕하세요.

GCM 에서 받아온 메세지를 JSONObject 객체로 만드려는데, 계속 아래와같은 오류가 발생합니다.

ERROR ----Value Bundle of type java.lang.String cannot be converted to JSONObject

 

받아온 GCM 메세지를 찍어보면 아래와 같습니다.

Received: Bundle[{android.support.content.wakelockid=2, collapse_key=1, from=969710237186}]

 
JSONObject로 만드려면 어떻게 해야 할까요?
 
 
서버에서 보낼 때는 아래와 같은 구조로 보냈습니다.
 
1
2
3
4
5
6
JSONObject jsonObject = new JSONObject();
jsonObject.put("collapse_key",String.valueOf(1));
jsonObject.put("time_to_live",108);
jsonObject.put("delay_while_idle",true);
jsonObject.put("registration_ids",new JSONArray(reg_list));
 
 
Push메세지를 받아와서 처리하는  Intent는 아래와 같습니다..
 
에러는 13번째 줄에서 발생합니다.
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Override
    protected void onHandleIntent(Intent intent) {
        if (!extras.isEmpty()) { 
                         if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {
                Log.i(TAG, "Received: " + extras.toString());
                pushProcess(extras.toString());
            }
        }
    }
    
    private void pushProcess(String jsonString) {
        try {
            JSONObject obj = new JSONObject(jsonString);
        } catch (JSONException e) {
            Log.d(TAG,"ERROR ----" + e.getMessage());
        }
    }

 

조언 부탁드립니다.

감사합니다!

apcnic (1,420 포인트) 님이 2013년 11월 17일 질문

1개의 답변

0 추천
 
채택된 답변
그냥 substring으로 json 부분만 잘라서 사용하니까 에러가 발생하지 않습니다.

해결!
apcnic (1,420 포인트) 님이 2013년 11월 18일 답변
그냥 String 으로 만들어서 서버에서 던지고 intent에서 스트링으로 가져와서 Jsonobject 으로 변환해서 하는게 나으실거같은데여 굳이 자르기까지 ㅡㅡㅋ
...