如何从AsyncTask获取JSON对象数据<void,void,=“”jsonobject =“”>?

时间:2015-10-08 16:57:00

标签: java android json android-asynctask

我有一个MainActivity类。一个扩展AsyncTask的Login类。执行Login类之后,它会将JSONObject返回给MainActivity,如:

AsyncTask<Void, Void, JSONObject> getData = (new Login()).execute();

现在如何从getData中分离数据?

我回来的JOSNObject看起来像是:

{"FirstName":"A","LastName":"B","ID":"09","Cell":"0123456789","Email":"abc@yahoo.com"}

还是我需要以不同的方式处理这些问题?

2 个答案:

答案 0 :(得分:1)

您可以在doInBackground上尝试此操作:

JSONObject json = new JSONObject(StringResponse);

String FirstName = json.getString("FirstName");
String LastName = json.getString("LastName");
String ID = json.getString("ID");
String Cell= json.getString("Cell");
String Email= json.getString("Email");

现在你在不同的字符串上分开了数据。

答案 1 :(得分:0)

要将数据从AsyncTask传递到您的Activity,您可以创建一个回调方法。

  1. 首先创建一个接口

    public interface OnTaskCompleteListener{
      public void onTaskCompleted(JsonObject jsonobj);  
    }
    
  2. 然后在Activity

    中实现并覆盖其方法
    public class MainActivity extends Activity implements OnTaskCompleteListener{
      @Override
      public void OnTaskCompleted(JsonObject jsonobj)
      {
    
      }
    
  3. 最后从AsyncTask传递数据

    public class Login extends AsyncTask<Void, Void, JSONObject>{ 
    private OnTaskCompleteListener listener;
    
    public Login(OnTaskCompleteListener listener){
        this.listener=listener;
    }
    protected void onPostExecute(JsonObject obj){
        listener.onTaskCompleted(obj);
    }
    }
    

    我希望这就是你想要的。如果有疑问,你可以参考这个问题:

    android asynctask sending callbacks to ui