2016-06-30 06:02
浏览 129


There is some issue with the JSONObjectRequest in Volley library to receive the JSON data. I suppose I am going wrong somewhere in receiving the JSON object in the Java code. Following is my JSON output coming as a response from the php file hosted on server:

           {"id":"1","name":"Raja","phonenumber":"66589952","occupation":"Plumber","location":"Salunke Vihar","rating":"4","Review":"Hard Worker","price":"80"},

Following is clode from the Java file where I am using the JSON request using Volley library:

JsonObjectRequest jsonRequest = new JsonObjectRequest (Request.Method.POST, url,
            new Response.Listener<JSONObject>() {
                public void onResponse(JSONObject response) {
                    try {
                        // I should receive the success value 1 here
                        int success = response.getInt("success");
                        //and should receive the workers array here

                    } catch (JSONException e) {
                    Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_LONG).show();
                    recyclerView = (RecyclerView) findViewById(;

                    layoutManager = new LinearLayoutManager(getApplicationContext());
                    //Finally initializing our adapter
                    adapter = new WorkerAdapter(listWorkers);
                   //adapter is working fine
            new Response.ErrorListener() {
                public void onErrorResponse(VolleyError error) {
        protected Map<String,String> getParams(){
            Map<String,String> params = new HashMap<String, String>();
            params.put("tag", "get_list");
            params.put("service", service);
            return params;

Running the above code it goes to the error listener and gives the output as org.json.JSONException: End of input at character 0 of. But if I use StringRequest in place of JsonObjectRequest and receive the JSON response as a string then I am able to receive the output as a String but I can't use it further. So, please let me know where I am going wrong in receiving the JSONdata and suggest me the changes in the code that I must do.

EDIT- I am adding the php file which is returning the JSON object. Please let me know if there is some error over here:


$tag = $_POST['tag'];
// array for JSON response
$response = array();

if ($tag == 'get_list') {
// Request type is check Login
$service = $_POST['service'];

//echo json_encode($service);   

// get all items from myorder table
$result = mysql_query("SELECT * FROM Workers WHERE Occupation = '$service'") or die(mysql_error());

if (mysql_num_rows($result) > 0) {

    $response["workers"] = array();

    while ($row = mysql_fetch_array($result)) {
            // temp user array
            $item = array();
            $item["id"] = $row["wID"];
            $item["pic"] = $row["Pic"];
            $item["name"] = $row["Name"];
            $item["phonenumber"] = $row["Phone Number"];
            $item["occupation"] = $row["Occupation"];
            $item["location"] = $row["Location"];
            $item["rating"] = $row["Rating"];
            $item["Review"] = $row["Review"];
            $item["price"] = $row["Price"];

            // push ordered items into response array
            array_push($response["workers"], $item);
      // success
     $response["success"] = 1;
else {
    // order is empty
      $response["success"] = 0;
      $response["message"] = "No Items Found";
echo json_encode($response);    
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dpv21589 2016-06-30 16:08

    When I ran the api end point I have got the following result instead of the one that you have been telling so. So stop giving irrelevant data.

    "Plumber"{"workers":[{"id":"1","pic":"ttp:\/\/\/images\/vorkal_cover.PNG","name":"Raja","phonenumber":"66589952","occupation":"Plumber","location":"Salunke Vihar","rating":"4","Review":"Hard Worker. Very Professional.","price":"80"},{"id":"2","pic":"http:\/\/\/images\/vorkal_cover.PNG","name":"Aman","phonenumber":"789456","occupation":"Plumber","location":"Wakad","rating":"4","Review":"Good","price":"80"}],"success":1}

    Where Plumber is not the tag at all, hence throws error as the same is not valid json string. There's error in your server side scripting. I request you to send the complete script without modification.

    If you are not getting the JSONObject that means the following is a malformed json. Thus you can try the following code in server side

     function utf8ize($d) {
    if (is_array($d)) {
        foreach ($d as $k => $v) {
            $d[$k] = $this->utf8ize($v);
    } else if (is_string ($d)) {
        return utf8_encode($d);
    return $d;

    where$d is the string/response. use it as echo json_encode($this->utf8ize($detail));

    Also try the following in client side code

    Gson gson = new Gson();
    JsonReader reader = new JsonReader(new StringReader(result1));

    You may refer the solution to this question here click here

    打赏 评论
  • douhao7677 2016-06-30 06:53

    Can you check that server is returning you a JSONObject and not the string? In Volley if the type of response is different then it will return the error.

    打赏 评论
  • dpv50040 2016-06-30 07:43

    you can use Gson to convert json string to object

     Gson gson = new Gson();
     GetWorkersResponse getWorkersResponse =gson.fromJson(response,GetWorkersResponse.class);
     class GetWorkersResponse {
              public boolean success;
              public List<Worker> workers = new ArryList<>(); 

    It's work for me.

    打赏 评论

相关推荐 更多相似问题