2016-11-23 279 views
-1

如何使用putExtra獲取JsonObject?我想要獲取JSON文本來顯示另一個活動。如何在android上使用intent putExtra JsonObject?

@Override 
protected String doInBackground(Void... v) { 

    HashMap<String, String> params = new HashMap<>(); 

    params.put(KEY_MEMBER_ID, memberId); 
    params.put(KEY_PWD, pwd); 

    JSONParser jParser = new JSONParser(); 

    JSONObject json = jParser.sendPostRequest(GlobalVariabel.URL_LOGIN_MEMBER, params); 
    System.out.println("URL :######### "+GlobalVariabel.URL_LOGIN_MEMBER); 

    try { 
     status = json.getString("STATUS"); 

     System.out.println("STATUSSSSSSSSSSSSSSSSSS : " + status); 
     System.out.println(json); 

     JSONObject jObj = json.getJSONObject("PROFILE"); 
     if (jObj != null) { 
      user_id = jObj.getString("USER_ID"); 
      profile_url = jObj.getString("PROFILE_URL"); 
      date_joined = jObj.getString("DATE_JOINED"); 
      phone_type = jObj.getString("PHONE_TYPE"); 
      email = jObj.getString("EMAIL"); 
      name = jObj.getString("NAME"); 
     } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
      return null; 
     } 

我想獲得的JSONObject電子郵件地址和名稱使用intent.putExtra到另一個活動。

Intent intent = new Intent(getActivity(), MainActivity.class); 
        intent.putExtra(".... ", ....); 
        //intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
        startActivity(intent); 

回答

1

用於發送JSON

Intent intent = new Intent(getActivity(), MainActivity.class); 
       intent.putExtra("json", jsonObject.toString()); 
       startActivity(intent); 

對於檢索

 if(getIntent().hasExtra("json")) { 
     JsonObject mJsonObject = new JsonObject(getIntent().getStringExtra("json")); 
    } 
+0

@Selvin \t 我不理解jsonObject.toString(),JSONObject的JSON或jObj? –

+0

你想要在意圖中發送的jsonObject。首先將它轉換爲字符串,然後發送它的意圖,然後檢索它作爲字符串,並把它放入jsonobject,因爲我已經提到 –

-1

只要做到這樣

轉到onPostExcute()方法

proctected void onPostExcute(String result){ 
       Intent intent = new Intent(getActivity(), MainActivity.class); 
       intent.putExtra("YOUR_KEY ", result);// result contains all jsonObject value 
       //intent.setFlags(intent.getFlags() |Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
       startActivity(intent);} 

希望這會幫助你。 :)

0

json實際上是一個確定格式的「字符串」文本。

第一種選擇:

我建議你將它傳遞給字符串通過putExtra發送它,然後重新映射它的JSON對象:

Intent intent = new Intent(getActivity(), MainActivity.class); 
        intent.putExtra("JSON_OBJECT", json.toString()); 
        //intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
        startActivity(intent); 

,並通過檢索它:

String jsonObject = intent.getStringExtra("JSON_OBJECT"); 

之後,你將不得不重新構建json對象。

第二個選項

轉換的JSONObject的,其實現Serializable或Parcelable並把它通過一個POJO對象:

intent.putExtra("POJO_OBJECT", myJsonObject); 

,並通過檢索:

MyJsonObject myjsonObject = (MyJsonObject)intent.getParcelableExtra("POJO_OBJECT", myJsonObject); 
0

試這個 //將全局字符串decalre爲String JsonOutput =「」;

@Override 
protected String doInBackground(Void... v) { 

HashMap<String, String> params = new HashMap<>(); 

params.put(KEY_MEMBER_ID, memberId); 
params.put(KEY_PWD, pwd); 

JSONParser jParser = new JSONParser(); 

JSONObject json = jParser.sendPostRequest(GlobalVariabel.URL_LOGIN_MEMBER, params); 
System.out.println("URL :######### "+GlobalVariabel.URL_LOGIN_MEMBER); 

try { 
    status = json.getString("STATUS"); 

    System.out.println("STATUSSSSSSSSSSSSSSSSSS : " + status); 
    System.out.println(json); 

    JSONObject jObj = json.getJSONObject("PROFILE"); 
    JsonOutput=jobj.toString(); //convert your json to string here. 

    if (jObj != null) { 
     user_id = jObj.getString("USER_ID"); 
     profile_url = jObj.getString("PROFILE_URL"); 
     date_joined = jObj.getString("DATE_JOINED"); 
     phone_type = jObj.getString("PHONE_TYPE"); 
     email = jObj.getString("EMAIL"); 
     name = jObj.getString("NAME"); 
    } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
     return null; 
    } 
在postExecute

()

proctected void onPostExcute(){ 
      Intent intent = new Intent(yourActivity.this, MainActivity.class); 
      intent.putExtra("YOUR_KEY ", JsonOutput);// result contains all jsonObject value 
      //intent.setFlags(intent.getFlags() |Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
      startActivity(intent); 
    } 
在MainActivity.class

//要得到這個細節。

String Jsonoutput=getIntent().getExtras().getString("Your Key"); 
JSONObject job=new JSOObject(Jsonoutput); 
//now parse this job to get your name and email.or anuy other data in jobj. 

希望這會有所幫助。