2016-11-23 282 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. 

希望这会有所帮助。