Sending ArrayList from Android to a PHP script using JSON


What is the Scenario

I want to send multiple ArrayList (usally 5) from android to the server and want to insert it into mysql database.

What I Have Done Successfully

I have Successfully send single value and Multiple Values from Android to PHP script using JSON

i have Received single and Multiple Records from mysql database to android using JSON

Here is the Code for inserting and getting value from server

 class TeacherLogin1 extends AsyncTask<Void, Void, Void> {

         String name,pass;
         Context contextt;
         int idofteach = 0;
         int codee = 0;

         TeacherLogin1(String pass1,String name1,Context context)
             name = name1;
             pass = pass1;
             contextt  = context;

         protected void onPreExecute() {

         protected Void doInBackground(Void... arg0) {
              codee = Authenticate(name,pass);

         return null;

         protected void onPostExecute(Void result) {
             Intent teachers = new Intent(context,TeachersView.class);
             teachers.putExtra("TID", codee);
             teachers.putExtra("TNAME", TeachName);
             teachers.putExtra("sub1", subj1);
             teachers.putExtra("sub2", subj2);
             teachers.putExtra("sub3", subj3);
             teachers.putExtra("sub4", subj4);
             Toast.makeText(context, "Wrong Details", Toast.LENGTH_SHORT).show();
         codee = 0;
     public int Authenticate(String name,String Pass)

                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

              // put the values of id and name in that variable
            nameValuePairs.add(new BasicNameValuePair("name",name));
            nameValuePairs.add(new BasicNameValuePair("pass",Pass));

                HttpClient httpclient = new DefaultHttpClient();
                 ScriptsFilePath a = new ScriptsFilePath();
                HttpPost httppost = new HttpPost(a.TeacherAuthen);

                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                    Log.e("pass 1", "connection success ");
                catch(Exception e)
                    Log.e("Fail 1", e.toString());

                    BufferedReader reader = new BufferedReader
                    (new InputStreamReader(is,"iso-8859-1"),8);
                    StringBuilder sb = new StringBuilder();
                    while ((line = reader.readLine()) != null)
                        sb.append(line + "\n");
                    result = sb.toString();
                Log.e("pass 2", "connection success ");
                catch(Exception e)
                    Log.e("Fail 2", e.toString());

                      try {

                       JSONObject jsonResponse = new JSONObject(result);
                       if(jsonResponse != null)
                       JSONArray jsonMainNode = jsonResponse.optJSONArray("GetTeacher");

                       for (int i = 0; i < jsonMainNode.length(); i++) {
                        JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                        code = jsonChildNode.optInt("ID");
                        TeachName= jsonChildNode.optString("Name");
                        subj1= jsonChildNode.optString("subject1");
                        subj2= jsonChildNode.optString("subject2");
                        subj3= jsonChildNode.optString("subject3");
                        subj4= jsonChildNode.optString("subject4");


                      } catch (JSONException e) {
                //     Toast.makeText(getApplicationContext(), "Error" + e.toString(),
                //       Toast.LENGTH_SHORT).show();
                    return code;


and the TeacherAuthen.php script

error_reporting(E_ALL ^ E_DEPRECATED);

    $con = mysql_connect($host,$uname,$pwd) or die("connection failed");
    mysql_select_db($db,$con) or die("db selection failed");


    $name1['code1'] = "sdf";

$sql = "SELECT * FROM teachers WHERE Username ='$name' and Pass='$pass'";
$result = mysql_query($sql);
$json = array();

echo json_encode($json);

where i am stuck

I dont no how to send ArrayList from android to PHP Script.

For Example I want to send these arraylists to php script =

ArrayList<String> Questions=  new ArrayList<String>();
 ArrayList<String> A1=  new ArrayList<String>();
 ArrayList<String> A2=  new ArrayList<String>();
 ArrayList<String> A3=  new ArrayList<String>();
 ArrayList<String> A4=  new ArrayList<String>();

and then in the PHP script i want to insert like this

"INSERT INTO `Question` (`ID` ,`Question` ,`A1` ,`A2` ,`A3` , `A4` ) VALUES (NULL, '$Question', '$A1', '$A2', '$A3' ,'$A4'); "

if i am able to send even a single arrayList then i think i can make a way to do the above

and Thanks for you Time

This is your Array: you can create more as required in your example.

ArrayList<String> contact = new ArrayList<String>();

Then, create a JSONcontacts variable of type JSON to store this array in this object

JSONObject JSONcontacts = new JSONObject();

Now, loop through all elements in that contact array and store it in the JSONcontacts

//Loop through array of contacts and put them to a JSONcontact object
for (int i = 0; i < contact.size(); i++) {

    try {
        JSONcontacts.put("Count:" + String.valueOf(i + 1), contact.get(i));
    } catch (JSONException e) {


Lets say you created many Arrays, which you probably have done, now you hvave to put them all into 1 JSON. So create a EverythingJSON variable of type JSONObject()

JSONObject EverythingJSON = new JSONObject();

and now put all your contact array and other arrays into it, right you loop through them as described above:

EverythingJSON.put("contact", JSONcontacts);
EverythingJSON.put("something", JSONsoemthing);
EverythingJSON.put("else", JSONelse);

now this is your AsynchTask to send them to your PHP server:

    new AsyncTask() {
        //String responseBody = "";
        protected void onPostExecute(String msg) {
            //Not Needed

        protected Object doInBackground(Object... params) {
            //Create Array of Post Variabels
            ArrayList<NameValuePair> postVars = new ArrayList<NameValuePair>();

            //Add a 1st Post Value called JSON with String value of JSON inside
            //This is first and last post value sent because server side will decode the JSON and get other vars from it.
            postVars.add(new BasicNameValuePair("JSON", String.valueOf(JSON)));

            //Declare and Initialize Http Clients and Http Posts
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(Config.OnlineAPI);

            //Format it to be sent
            try {
                httppost.setEntity(new UrlEncodedFormEntity(postVars));

            } catch (UnsupportedEncodingException e) {

            /* Send request and Get the Response Back */
            try {

                HttpResponse response = httpclient.execute(httppost);
                String responseBody = EntityUtils.toString(response.getEntity());

            } catch (ClientProtocolException e) {

                Log.v("MAD", "Error sending... ");

            } catch (IOException e) {

                Log.v("MAD", "Error sending... ");


            return null;
    }.execute(null, null, null);

Now on the PHP server side, you can loop through this JSON as such: FIrst of all, get that JSON from POST and store it in a var:

//Receive JSON
$JSON_Received = $_POST["JSON"];

Now decode it from JSON:

//Decode Json
$obj = json_decode($JSON_Received, true);

And this is the loop to go through the array of contacts and get he Key and Value from it:

foreach ($obj['contact'] as $key => $value)
            //echo "<br>------" . $key . " => " . $value;

you can repeat this loop for other Arrays you have sent :) Good Luck!