0

I'm having problem with string cannot convert to JSONObject.Anyone could help to solve this problem? Thanks and very appreciate for helping.

<?php
    mysql_connect("localhost","test","");
    mysql_select_db("test");
    $response = array();
    $fullname=$_POST["fullname"];
    $result = mysql_query("select fullname,contact, DATE_FORMAT(reserveDate,'%e-%c-%Y') reserveDate, 
            DATE_FORMAT(reserveTime,'%h:%i %p') reserveTime,
            pax,tableNumber
            from reserve inner join customer using (customerID)
            where fullname=$fullname" );    
    if (mysql_num_rows($result) > 0) {  
        $response["reserve"] = array();
        while ($row = mysql_fetch_array($result)) {

            // temp user array

            $reserv = array();

            $reserv["fullname"] = $row["fullname"];
            $reserv["contact"] = $row["contact"];
            $reserv["reserveDate"] = $row["reserveDate"];
            $reserv["reserveTime"] = $row["reserveTime"];
            $reserv["pax"] = $row["pax"];
            $reserv["tableNumber"] = $row["tableNumber"];
            // push single product into final response array

            array_push($response["reserv"], $reserv);

        }

        // success
        $response["success"] = 1;
        // echoing JSON response
        echo json_encode($response);
    } else {
        $response["success"] = 0;
        $response["message"] = "No user found";
        // echo no users JSON
        echo json_encode($response);
    }
    ?>

JSONPARSER class

package com.example.easy;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONParser {

static InputStream is = null;
static JSONObject jObj = null;
static String json = "";

// constructor
public JSONParser() {

}

// function get json from url
// by making HTTP POST or GET method
public JSONObject makeHttpRequest(String url, String method,
        List<NameValuePair> params) {

    // Making HTTP request
    try {

        // check for request method
        if(method == "POST"){
            // request method is POST
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            httpPost.setEntity(new UrlEncodedFormEntity(params));

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        }else if(method == "GET"){
            // request method is GET
            DefaultHttpClient httpClient = new DefaultHttpClient();
            String paramString = URLEncodedUtils.format(params, "utf-8");
            url += "?" + paramString;
            HttpGet httpGet = new HttpGet(url);

            HttpResponse httpResponse = httpClient.execute(httpGet);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();
        }           


    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }

        //json = sb.toString();
        json = sb.toString().substring(0, sb.toString().length()-1);
        System.out.println("jsonstring ="+json);
        is.close();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;

}

}

There is an error occur in ReserveInfo class. Get this error" value .

package com.example.easy;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

public class Custname extends Activity implements OnClickListener {
    TextView custinfo2,lblempty2;


        Button btnsearch1;
        TextView custinfo,lblempty;
        ScrollView svcustdetails, svreserve;

        AutoCompleteTextView txtcustname ;
        String Contacts[];
        int arraysize;  
        private ProgressDialog pDialog;

        JSONParser jParser = new JSONParser();
        JSONParser jParser2 = new JSONParser();
        private static final String TAG_SUCCESS = "success";
        private static final String TAG_RESERV = "reserv";
        private static final String TAG_FULLNAME = "fullname";
        private static final String TAG_CONTACT = "contact";
        private static final String TAG_DATE = "reserveDate";
        private static final String TAG_TIME = "reserveTime";
        private static final String TAG_PAX = "pax";
        private static final String TAG_TABLE = "tableNumber";
        JSONArray reserv = null;
        JSONArray reserv2 = null;
        JSONObject json2;
        String contactno;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.custname);

        btnsearch1= (Button) findViewById(R.id.btnsearch);

        svcustdetails=(ScrollView)findViewById(R.id.svcustdetails);
        svreserve=(ScrollView)findViewById(R.id.svreserve);
        custinfo2=(TextView)findViewById(R.id.custinfo2);

        txtcustname = (AutoCompleteTextView)findViewById(R.id.txtcustname);     

         txtcustname = (AutoCompleteTextView)findViewById(R.id.txtcustname);

            btnsearch1= (Button) findViewById(R.id.btnsearch1);
            lblempty2= (TextView)findViewById(R.id.lblempty2);

        new LoadContact().execute();

        btnsearch1.setOnClickListener(new OnClickListener() {
            public void onClick(final View v) {
                if(txtcustname.getText().toString().equalsIgnoreCase("")){
                    Toast.makeText(Custname.this,"Please enter customer name", Toast.LENGTH_SHORT).show();
                }else{
                    reset();
                    new ReserveInfo().execute();
                }   
            }
        });
    }

    class LoadContact extends AsyncTask<String, String, String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        protected String doInBackground(String... args) {
            List<NameValuePair> params = new ArrayList<NameValuePair>();    
            JSONObject json = jParser.makeHttpRequest("http://10.0.2.2/Laicamproject/checkName.php", "GET", params);            
            // Check log cat for JSON reponse
            Log.d("All Name: ", json.toString());
            Contacts=new String[arraysize];

            try {
                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    reserv = json.getJSONArray(TAG_RESERV);
                    arraysize=reserv.length();
                    Contacts=new String[arraysize];
                    for(int a=0;a<arraysize;a++){
                         JSONObject c = reserv.getJSONObject(a);
                        Contacts[a]=c.getString(TAG_FULLNAME);
                    }   
                } else {
                    System.out.println("no user found");
                }
            } catch (JSONException e) {
                System.out.println("e3"+e.toString());
            }

            return null;
        }


        protected void onPostExecute(String file_url) {
            //ArrayList with duplicates String
            List<String> dupList = (List<String>) Arrays.asList(Contacts);

            //Converting ArrayList to HashSet to remove duplicates
            LinkedHashSet<String> listToSet = new LinkedHashSet<String>(dupList);

            //Creating Arraylist without duplicate values
            List<String> contlist = new ArrayList<String>(listToSet);

            System.out.println("Customer list: " + contlist );

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(Custname.this,android.R.layout.simple_dropdown_item_1line,contlist  );
            // Set the adapter 
            txtcustname.setAdapter(adapter);
            txtcustname.setThreshold(1);    
        }

    }

    class ReserveInfo extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();       
            pDialog = new ProgressDialog(Custname.this);
            pDialog.setMessage("Loading reservation");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        protected String doInBackground(String... args) {
            String n=txtcustname.getText().toString();
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair(TAG_FULLNAME,n ));
            json2 = jParser2.makeHttpRequest("http://10.0.2.2/Laicamproject/cName.php","POST", params);
            System.out.println("params"+params);
            try {
                reserv2 = json2.getJSONArray(TAG_RESERV);
                System.out.println("Reservation"+reserv2.toString());
                int i=0;
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                System.out.println("e1=="+e.toString());
            }
            return null;
        }

        protected void onPostExecute(String file_url) {
            pDialog.dismiss();
            int num=1;
            JSONObject c2;
            try {
                int success = json2.getInt(TAG_SUCCESS);
                if (success == 1) {
                    for(int i=0;i<reserv2.length();i++){
                        c2 = reserv2.getJSONObject(i);
                        //System.out.println("c2.getString(TAG_CONTACT).==="+c2.getString(TAG_CONTACT));
                        //System.out.println("c2.getString(TAG_FULLNAME).==="+c2.getString(TAG_FULLNAME));  
                        custinfo2.setText("Name \t: "+ c2.getString(TAG_FULLNAME)
                                +"\nPhone \t: " + c2.getString(TAG_CONTACT));   

                        lblempty2.append("\n["+num+"] "+"Date \t\t: "+ c2.getString(TAG_DATE)
                                    +"\n\t Time \t\t: " + c2.getString(TAG_TIME)
                                    +"\n\t Pax \t\t\t: "+ c2.getString(TAG_PAX)
                                    +"\n\t Table \t\t: "+ c2.getString(TAG_TABLE)+"\n");
                    }
                }else{
                    showAlert();
                }

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                System.out.println("e2=="+e.toString());
        }
    }

        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    }

        @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub  
    }

    public void showAlert(){
        Custname.this.runOnUiThread(new Runnable() {
            public void run() {
                AlertDialog.Builder builder = new AlertDialog.Builder(Custname.this);
                builder.setTitle("No contact number found")
                       .setCancelable(false)
                       .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int id) {
                               txtcustname.setText("");
                               reset();
                           }
                       });                     
                AlertDialog alert = builder.create();
                alert.show();               
            }
        });
    }

    public void reset(){
        lblempty2.setText("");
        custinfo2.setText("");
    }
}

1 Answer 1

1

I took a look to your php and, to me, seems that the root is a JSONArray and not a JSONObject. Your makeHttpRequest should return a JSONArray instead of a JSONObject

Also String comparison in Java is performed through the equals method, == check the String's reference.

For instance

if(method == "POST")

and if-else branch also

Sign up to request clarification or add additional context in comments.

7 Comments

May I know where is the comparison of String tat I did wrongly?
But im just wonder that i also have another class which search by contact number is working well in this exist code but just the problem with search by name.
I mean i has 2 ways to search for customer information. One is search by contact number, another is search by customer name. I can run well in contact number class but just cannot run in this Custname class. Thats why im thinking is it the problem is my php.
can you post what the php is returning ? The JSON you get from your php
Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot converted to JSONObject I try to print out the the String json from JSONParser but php just return <br />
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.